tx · 9VNNr5DwDD2Dj3XyNsG2hRPifzGtKJ3Zm3tFHPYANH9

3N8nB5XeXcXTUDeiH6657UHa3wHa2rbZfDk:  -0.01500000 Waves

2021.06.07 20:19 [1560233] smart account 3N8nB5XeXcXTUDeiH6657UHa3wHa2rbZfDk > SELF 0.00000000 Waves

{ "type": 13, "id": "9VNNr5DwDD2Dj3XyNsG2hRPifzGtKJ3Zm3tFHPYANH9", "fee": 1500000, "feeAssetId": null, "timestamp": 1623086417412, "version": 2, "chainId": 84, "sender": "3N8nB5XeXcXTUDeiH6657UHa3wHa2rbZfDk", "senderPublicKey": "BfXK2ez9xjdgWtoFNsnaGPRFjHcFixy3UUrQ2iN8wVfX", "proofs": [ "43yfGuSEqHeN3Dodts9Yv7AUsi1zirKUSKTiB9r4xxNrvcSddeUqQ8PMrK1kRwe3hzAsggREytCXXKFUQDTsLb4x" ], "script": "base64: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cmVhdGVQYXJraW5nU3BvdFNsaWNlAAAABAUAAAANcGFya2luZ1Nwb3RJZAUAAAAUcGFya2luZ1Nwb3RTdGFydFRpbWUFAAAAD2Jvb2tlZFN0YXJ0VGltZQkAAGQAAAACBQAAAA1leGlzdGluZ1NsaWNlAAAAAAAAAAABCQAETgAAAAIJAAROAAAAAgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAA1wYXJraW5nU3BvdElkAgAAAAdfc2xpY2VfCQABpAAAAAEFAAAADGRlc2lyZWRTbGljZQIAAAAHX3JlbnRlcgUAAAAGcmVudGVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAA1wYXJraW5nU3BvdElkAgAAAAdfc2xpY2VfCQABpAAAAAEFAAAADGRlc2lyZWRTbGljZQIAAAAKX3N0YXJ0VGltZQUAAAAPYm9va2VkU3RhcnRUaW1lCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAA1wYXJraW5nU3BvdElkAgAAAAdfc2xpY2VfCQABpAAAAAEFAAAADGRlc2lyZWRTbGljZQIAAAAIX2VuZFRpbWUFAAAADWJvb2tlZEVuZFRpbWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAANcGFya2luZ1Nwb3RJZAIAAAAGX3NsaWNlCQAAZAAAAAIFAAAADWV4aXN0aW5nU2xpY2UAAAAAAAAAAAIFAAAAA25pbAkBAAAAFmNyZWF0ZVBhcmtpbmdTcG90U2xpY2UAAAAEBQAAAA1wYXJraW5nU3BvdElkBQAAABRwYXJraW5nU3BvdFN0YXJ0VGltZQUAAAAPYm9va2VkU3RhcnRUaW1lCQAAZAAAAAIFAAAADWV4aXN0aW5nU2xpY2UAAAAAAAAAAAEJAQAAABZjcmVhdGVQYXJraW5nU3BvdFNsaWNlAAAABAUAAAANcGFya2luZ1Nwb3RJZAUAAAANYm9va2VkRW5kVGltZQUAAAAScGFya2luZ1Nwb3RFbmRUaW1lCQAAZAAAAAIFAAAADWV4aXN0aW5nU2xpY2UAAAAAAAAAAAIAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tledF8Wx4=", "height": 1560233, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DvZFvjGyhVn5UoV3pu2XFW2jtZNHmkyxpNUkh8xjCByx Next: 9rKbFPpRytijkSKvnTMLt9ndqSev8FmqdoVmnBz2LBhB Diff:
OldNewDifferences
1515
1616 @Callable(i)
1717 func bookParkingSpotSlice (parkingSpotId,desiredSlice,startTime,endTime,renter) = {
18- let bookedStartTime = (startTime - (startTime % 3600))
19- let bookedEndTime = (endTime - (endTime % 3600))
20- let parkingSpotStartTime = getIntegerValue(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime"))
21- let parkingSpotEndTime = getIntegerValue(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime"))
22- let existingSlice = getIntegerValue(this, (parkingSpotId + "_slice"))
23- if (if ((parkingSpotStartTime > bookedStartTime))
24- then true
25- else (bookedEndTime > parkingSpotEndTime))
26- then throw("time is out of range for parking spot")
27- else {
28- let existingRenter = getString(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"))
29- if ((existingRenter != unit))
30- then throw("parking spot has already been booked")
31- else if (if ((bookedStartTime == parkingSpotStartTime))
32- then (bookedEndTime == parkingSpotEndTime)
33- else false)
34- then [StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_slicetest0"), desiredSlice)]
35- else if (if ((bookedStartTime == parkingSpotStartTime))
36- then (bookedEndTime != parkingSpotEndTime)
37- else false)
38- then ([StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime"), bookedStartTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime"), bookedEndTime), IntegerEntry((parkingSpotId + "_slice"), (existingSlice + 1))] ++ createParkingSpotSlice(parkingSpotId, bookedEndTime, parkingSpotEndTime, (existingSlice + 1)))
39- else if (if ((bookedEndTime == parkingSpotEndTime))
40- then (bookedStartTime != parkingSpotStartTime)
41- else false)
42- then ([StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime"), bookedStartTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime"), bookedEndTime), IntegerEntry((parkingSpotId + "_slice"), (existingSlice + 1))] ++ createParkingSpotSlice(parkingSpotId, parkingSpotStartTime, bookedStartTime, (existingSlice + 1)))
43- else (([StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime"), bookedStartTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime"), bookedEndTime), IntegerEntry((parkingSpotId + "_slice"), (existingSlice + 2))] ++ createParkingSpotSlice(parkingSpotId, parkingSpotStartTime, bookedStartTime, (existingSlice + 1))) ++ createParkingSpotSlice(parkingSpotId, bookedEndTime, parkingSpotEndTime, (existingSlice + 2)))
44- }
18+ let payment = value(i.payments[0])
19+ let cost = getIntegerValue(this, (parkingSpotId + "_cost"))
20+ if (!(isDefined(payment)))
21+ then throw("Should be with Payment in Waves")
22+ else if (isDefined(payment.assetId))
23+ then throw("Payment should be in Waves")
24+ else if ((payment.amount != cost))
25+ then throw(((("payment is less than required, sent: " + toString(payment.amount)) + " , required: ") + toString(cost)))
26+ else {
27+ let bookedStartTime = (startTime - (startTime % 3600))
28+ let bookedEndTime = (endTime - (endTime % 3600))
29+ let parkingSpotStartTime = getIntegerValue(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime"))
30+ let parkingSpotEndTime = getIntegerValue(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime"))
31+ let existingSlice = getIntegerValue(this, (parkingSpotId + "_slice"))
32+ if (if ((parkingSpotStartTime > bookedStartTime))
33+ then true
34+ else (bookedEndTime > parkingSpotEndTime))
35+ then throw("time is out of range for parking spot")
36+ else {
37+ let existingRenter = getString(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"))
38+ if ((existingRenter != unit))
39+ then throw("parking spot has already been booked")
40+ else if (if ((bookedStartTime == parkingSpotStartTime))
41+ then (bookedEndTime == parkingSpotEndTime)
42+ else false)
43+ then [StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_slicetest0"), desiredSlice)]
44+ else if (if ((bookedStartTime == parkingSpotStartTime))
45+ then (bookedEndTime != parkingSpotEndTime)
46+ else false)
47+ then ([StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime"), bookedStartTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime"), bookedEndTime), IntegerEntry((parkingSpotId + "_slice"), (existingSlice + 1))] ++ createParkingSpotSlice(parkingSpotId, bookedEndTime, parkingSpotEndTime, (existingSlice + 1)))
48+ else if (if ((bookedEndTime == parkingSpotEndTime))
49+ then (bookedStartTime != parkingSpotStartTime)
50+ else false)
51+ then ([StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime"), bookedStartTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime"), bookedEndTime), IntegerEntry((parkingSpotId + "_slice"), (existingSlice + 1))] ++ createParkingSpotSlice(parkingSpotId, parkingSpotStartTime, bookedStartTime, (existingSlice + 1)))
52+ else (([StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime"), bookedStartTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime"), bookedEndTime), IntegerEntry((parkingSpotId + "_slice"), (existingSlice + 2))] ++ createParkingSpotSlice(parkingSpotId, parkingSpotStartTime, bookedStartTime, (existingSlice + 1))) ++ createParkingSpotSlice(parkingSpotId, bookedEndTime, parkingSpotEndTime, (existingSlice + 2)))
53+ }
54+ }
4555 }
4656
4757
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func createParkingSpotSlice (parkingSpotId,startTime,endTime,slice) = [IntegerEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_startTime"), startTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_endTime"), endTime)]
55
66
77 @Callable(i)
88 func createParkingSpot (owner,lat,long,startTime,endTime,cost) = {
99 let roundedStartTime = (startTime - (startTime % 3600))
1010 let roundedEndTime = (endTime - (endTime % 3600))
1111 ([StringEntry((toBase64String(i.transactionId) + "_owner"), owner), StringEntry((toBase64String(i.transactionId) + "_lat"), lat), StringEntry((toBase64String(i.transactionId) + "_long"), long), IntegerEntry((toBase64String(i.transactionId) + "_cost"), cost), IntegerEntry((toBase64String(i.transactionId) + "_slice"), 0)] ++ createParkingSpotSlice(toBase64String(i.transactionId), roundedStartTime, roundedEndTime, 0))
1212 }
1313
1414
1515
1616 @Callable(i)
1717 func bookParkingSpotSlice (parkingSpotId,desiredSlice,startTime,endTime,renter) = {
18- let bookedStartTime = (startTime - (startTime % 3600))
19- let bookedEndTime = (endTime - (endTime % 3600))
20- let parkingSpotStartTime = getIntegerValue(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime"))
21- let parkingSpotEndTime = getIntegerValue(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime"))
22- let existingSlice = getIntegerValue(this, (parkingSpotId + "_slice"))
23- if (if ((parkingSpotStartTime > bookedStartTime))
24- then true
25- else (bookedEndTime > parkingSpotEndTime))
26- then throw("time is out of range for parking spot")
27- else {
28- let existingRenter = getString(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"))
29- if ((existingRenter != unit))
30- then throw("parking spot has already been booked")
31- else if (if ((bookedStartTime == parkingSpotStartTime))
32- then (bookedEndTime == parkingSpotEndTime)
33- else false)
34- then [StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_slicetest0"), desiredSlice)]
35- else if (if ((bookedStartTime == parkingSpotStartTime))
36- then (bookedEndTime != parkingSpotEndTime)
37- else false)
38- then ([StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime"), bookedStartTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime"), bookedEndTime), IntegerEntry((parkingSpotId + "_slice"), (existingSlice + 1))] ++ createParkingSpotSlice(parkingSpotId, bookedEndTime, parkingSpotEndTime, (existingSlice + 1)))
39- else if (if ((bookedEndTime == parkingSpotEndTime))
40- then (bookedStartTime != parkingSpotStartTime)
41- else false)
42- then ([StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime"), bookedStartTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime"), bookedEndTime), IntegerEntry((parkingSpotId + "_slice"), (existingSlice + 1))] ++ createParkingSpotSlice(parkingSpotId, parkingSpotStartTime, bookedStartTime, (existingSlice + 1)))
43- else (([StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime"), bookedStartTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime"), bookedEndTime), IntegerEntry((parkingSpotId + "_slice"), (existingSlice + 2))] ++ createParkingSpotSlice(parkingSpotId, parkingSpotStartTime, bookedStartTime, (existingSlice + 1))) ++ createParkingSpotSlice(parkingSpotId, bookedEndTime, parkingSpotEndTime, (existingSlice + 2)))
44- }
18+ let payment = value(i.payments[0])
19+ let cost = getIntegerValue(this, (parkingSpotId + "_cost"))
20+ if (!(isDefined(payment)))
21+ then throw("Should be with Payment in Waves")
22+ else if (isDefined(payment.assetId))
23+ then throw("Payment should be in Waves")
24+ else if ((payment.amount != cost))
25+ then throw(((("payment is less than required, sent: " + toString(payment.amount)) + " , required: ") + toString(cost)))
26+ else {
27+ let bookedStartTime = (startTime - (startTime % 3600))
28+ let bookedEndTime = (endTime - (endTime % 3600))
29+ let parkingSpotStartTime = getIntegerValue(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime"))
30+ let parkingSpotEndTime = getIntegerValue(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime"))
31+ let existingSlice = getIntegerValue(this, (parkingSpotId + "_slice"))
32+ if (if ((parkingSpotStartTime > bookedStartTime))
33+ then true
34+ else (bookedEndTime > parkingSpotEndTime))
35+ then throw("time is out of range for parking spot")
36+ else {
37+ let existingRenter = getString(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"))
38+ if ((existingRenter != unit))
39+ then throw("parking spot has already been booked")
40+ else if (if ((bookedStartTime == parkingSpotStartTime))
41+ then (bookedEndTime == parkingSpotEndTime)
42+ else false)
43+ then [StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_slicetest0"), desiredSlice)]
44+ else if (if ((bookedStartTime == parkingSpotStartTime))
45+ then (bookedEndTime != parkingSpotEndTime)
46+ else false)
47+ then ([StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime"), bookedStartTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime"), bookedEndTime), IntegerEntry((parkingSpotId + "_slice"), (existingSlice + 1))] ++ createParkingSpotSlice(parkingSpotId, bookedEndTime, parkingSpotEndTime, (existingSlice + 1)))
48+ else if (if ((bookedEndTime == parkingSpotEndTime))
49+ then (bookedStartTime != parkingSpotStartTime)
50+ else false)
51+ then ([StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime"), bookedStartTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime"), bookedEndTime), IntegerEntry((parkingSpotId + "_slice"), (existingSlice + 1))] ++ createParkingSpotSlice(parkingSpotId, parkingSpotStartTime, bookedStartTime, (existingSlice + 1)))
52+ else (([StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime"), bookedStartTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime"), bookedEndTime), IntegerEntry((parkingSpotId + "_slice"), (existingSlice + 2))] ++ createParkingSpotSlice(parkingSpotId, parkingSpotStartTime, bookedStartTime, (existingSlice + 1))) ++ createParkingSpotSlice(parkingSpotId, bookedEndTime, parkingSpotEndTime, (existingSlice + 2)))
53+ }
54+ }
4555 }
4656
4757
4858 @Verifier(tx)
4959 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
5060

github/deemru/w8io/026f985 
30.08 ms