tx · CcFbFwdrGWdTeNHGQ8FEHpVBQmRof83zaSYMMeaSSkme 3N8nB5XeXcXTUDeiH6657UHa3wHa2rbZfDk: -0.01500000 Waves 2021.06.07 20:41 [1560253] smart account 3N8nB5XeXcXTUDeiH6657UHa3wHa2rbZfDk > SELF 0.00000000 Waves
{ "type": 13, "id": "CcFbFwdrGWdTeNHGQ8FEHpVBQmRof83zaSYMMeaSSkme", "fee": 1500000, "feeAssetId": null, "timestamp": 1623087730767, "version": 2, "chainId": 84, "sender": "3N8nB5XeXcXTUDeiH6657UHa3wHa2rbZfDk", "senderPublicKey": "BfXK2ez9xjdgWtoFNsnaGPRFjHcFixy3UUrQ2iN8wVfX", "proofs": [ "48btPWrcBVTcipAF8u6FmcETQkQ9e9udSr98gRLLTY3gcpcXGaHcoxxGy5Ne4EowAunXn7dg4HAD7JwVMRniFK1U" ], "script": "base64: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AAAABAUAAAANcGFya2luZ1Nwb3RJZAUAAAAUcGFya2luZ1Nwb3RTdGFydFRpbWUFAAAAD2Jvb2tlZFN0YXJ0VGltZQkAAGQAAAACBQAAAA1leGlzdGluZ1NsaWNlAAAAAAAAAAABCQAETgAAAAIJAAROAAAAAgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAA1wYXJraW5nU3BvdElkAgAAAAdfc2xpY2VfCQABpAAAAAEFAAAADGRlc2lyZWRTbGljZQIAAAAHX3JlbnRlcgUAAAAGcmVudGVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAA1wYXJraW5nU3BvdElkAgAAAAdfc2xpY2VfCQABpAAAAAEFAAAADGRlc2lyZWRTbGljZQIAAAAKX3N0YXJ0VGltZQUAAAAPYm9va2VkU3RhcnRUaW1lCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAA1wYXJraW5nU3BvdElkAgAAAAdfc2xpY2VfCQABpAAAAAEFAAAADGRlc2lyZWRTbGljZQIAAAAIX2VuZFRpbWUFAAAADWJvb2tlZEVuZFRpbWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAANcGFya2luZ1Nwb3RJZAIAAAAGX3NsaWNlCQAAZAAAAAIFAAAADWV4aXN0aW5nU2xpY2UAAAAAAAAAAAIFAAAAA25pbAkBAAAAFmNyZWF0ZVBhcmtpbmdTcG90U2xpY2UAAAAEBQAAAA1wYXJraW5nU3BvdElkBQAAABRwYXJraW5nU3BvdFN0YXJ0VGltZQUAAAAPYm9va2VkU3RhcnRUaW1lCQAAZAAAAAIFAAAADWV4aXN0aW5nU2xpY2UAAAAAAAAAAAEJAQAAABZjcmVhdGVQYXJraW5nU3BvdFNsaWNlAAAABAUAAAANcGFya2luZ1Nwb3RJZAUAAAANYm9va2VkRW5kVGltZQUAAAAScGFya2luZ1Nwb3RFbmRUaW1lCQAAZAAAAAIFAAAADWV4aXN0aW5nU2xpY2UAAAAAAAAAAAIAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tlebYgKOY=", "height": 1560253, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9yM62CguvdScB6c7Yq518J9HA3e7mGhzoh86yPY1U76 Next: 56oKvpxWbqTPYfbKztSjQp93jLQLLa4iQ14Eiz7BB7p2 Diff:
Old | New | Differences | |
---|---|---|---|
14 | 14 | ||
15 | 15 | ||
16 | 16 | @Callable(i) | |
17 | - | func bookParkingSpotSlice (parkingSpotId,desiredSlice,startTime,endTime,renter) = if ((size(i.payments) == 0)) | |
18 | - | then throw("no payments attached") | |
19 | - | else { | |
20 | - | let payment = i.payments[0] | |
21 | - | let cost = getIntegerValue(this, (parkingSpotId + "_cost")) | |
22 | - | if (!(isDefined(payment))) | |
23 | - | then throw("missing payment") | |
24 | - | else if (isDefined(payment.assetId)) | |
25 | - | then throw("payment should be in waves") | |
17 | + | 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 | + | let payment = i.payments[0] | |
24 | + | let cost = getInteger(this, (parkingSpotId + "_cost")) | |
25 | + | if (!(isDefined(payment))) | |
26 | + | then throw("missing payment") | |
27 | + | else if (isDefined(payment.assetId)) | |
28 | + | then throw("payment should be in waves") | |
29 | + | else if ((cost == unit)) | |
30 | + | then throw("could not extract cost for parking space") | |
26 | 31 | else if ((payment.amount != cost)) | |
27 | - | then throw(((("payment is less than required, sent: " + toString(payment.amount)) + " , required: ") + toString(cost))) | |
28 | - | else { | |
29 | - | let bookedStartTime = (startTime - (startTime % 3600)) | |
30 | - | let bookedEndTime = (endTime - (endTime % 3600)) | |
31 | - | let parkingSpotStartTime = getIntegerValue(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime")) | |
32 | - | let parkingSpotEndTime = getIntegerValue(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime")) | |
33 | - | let existingSlice = getIntegerValue(this, (parkingSpotId + "_slice")) | |
34 | - | if (if ((parkingSpotStartTime > bookedStartTime)) | |
35 | - | then true | |
36 | - | else (bookedEndTime > parkingSpotEndTime)) | |
37 | - | then throw("time is out of range for parking spot") | |
38 | - | else { | |
39 | - | let existingRenter = getString(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter")) | |
40 | - | if ((existingRenter != unit)) | |
41 | - | then throw("parking spot has already been booked") | |
32 | + | then throw(("payment is less than required, sent: " + toString(payment.amount))) | |
33 | + | else if (if ((parkingSpotStartTime > bookedStartTime)) | |
34 | + | then true | |
35 | + | else (bookedEndTime > parkingSpotEndTime)) | |
36 | + | then throw("time is out of range for parking spot") | |
37 | + | else { | |
38 | + | let existingRenter = getString(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter")) | |
39 | + | if ((existingRenter != unit)) | |
40 | + | then throw("parking spot has already been booked") | |
41 | + | else if (if ((bookedStartTime == parkingSpotStartTime)) | |
42 | + | then (bookedEndTime == parkingSpotEndTime) | |
43 | + | else false) | |
44 | + | then [StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_slicetest0"), desiredSlice)] | |
42 | 45 | else if (if ((bookedStartTime == parkingSpotStartTime)) | |
43 | - | then (bookedEndTime | |
46 | + | then (bookedEndTime != parkingSpotEndTime) | |
44 | 47 | else false) | |
45 | - | then [StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_ | |
46 | - | else if (if (( | |
47 | - | then ( | |
48 | + | 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))) | |
49 | + | else if (if ((bookedEndTime == parkingSpotEndTime)) | |
50 | + | then (bookedStartTime != parkingSpotStartTime) | |
48 | 51 | else false) | |
49 | - | 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))) | |
50 | - | else if (if ((bookedEndTime == parkingSpotEndTime)) | |
51 | - | then (bookedStartTime != parkingSpotStartTime) | |
52 | - | else false) | |
53 | - | 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))) | |
54 | - | 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))) | |
55 | - | } | |
56 | - | } | |
57 | - | } | |
52 | + | 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))) | |
53 | + | 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))) | |
54 | + | } | |
55 | + | } | |
58 | 56 | ||
59 | 57 | ||
60 | 58 | @Verifier(tx) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func createParkingSpotSlice (parkingSpotId,startTime,endTime,slice) = [IntegerEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_startTime"), startTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_endTime"), endTime)] | |
5 | 5 | ||
6 | 6 | ||
7 | 7 | @Callable(i) | |
8 | 8 | func createParkingSpot (owner,lat,long,startTime,endTime,cost) = { | |
9 | 9 | let roundedStartTime = (startTime - (startTime % 3600)) | |
10 | 10 | let roundedEndTime = (endTime - (endTime % 3600)) | |
11 | 11 | ([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)) | |
12 | 12 | } | |
13 | 13 | ||
14 | 14 | ||
15 | 15 | ||
16 | 16 | @Callable(i) | |
17 | - | func bookParkingSpotSlice (parkingSpotId,desiredSlice,startTime,endTime,renter) = if ((size(i.payments) == 0)) | |
18 | - | then throw("no payments attached") | |
19 | - | else { | |
20 | - | let payment = i.payments[0] | |
21 | - | let cost = getIntegerValue(this, (parkingSpotId + "_cost")) | |
22 | - | if (!(isDefined(payment))) | |
23 | - | then throw("missing payment") | |
24 | - | else if (isDefined(payment.assetId)) | |
25 | - | then throw("payment should be in waves") | |
17 | + | 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 | + | let payment = i.payments[0] | |
24 | + | let cost = getInteger(this, (parkingSpotId + "_cost")) | |
25 | + | if (!(isDefined(payment))) | |
26 | + | then throw("missing payment") | |
27 | + | else if (isDefined(payment.assetId)) | |
28 | + | then throw("payment should be in waves") | |
29 | + | else if ((cost == unit)) | |
30 | + | then throw("could not extract cost for parking space") | |
26 | 31 | else if ((payment.amount != cost)) | |
27 | - | then throw(((("payment is less than required, sent: " + toString(payment.amount)) + " , required: ") + toString(cost))) | |
28 | - | else { | |
29 | - | let bookedStartTime = (startTime - (startTime % 3600)) | |
30 | - | let bookedEndTime = (endTime - (endTime % 3600)) | |
31 | - | let parkingSpotStartTime = getIntegerValue(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime")) | |
32 | - | let parkingSpotEndTime = getIntegerValue(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime")) | |
33 | - | let existingSlice = getIntegerValue(this, (parkingSpotId + "_slice")) | |
34 | - | if (if ((parkingSpotStartTime > bookedStartTime)) | |
35 | - | then true | |
36 | - | else (bookedEndTime > parkingSpotEndTime)) | |
37 | - | then throw("time is out of range for parking spot") | |
38 | - | else { | |
39 | - | let existingRenter = getString(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter")) | |
40 | - | if ((existingRenter != unit)) | |
41 | - | then throw("parking spot has already been booked") | |
32 | + | then throw(("payment is less than required, sent: " + toString(payment.amount))) | |
33 | + | else if (if ((parkingSpotStartTime > bookedStartTime)) | |
34 | + | then true | |
35 | + | else (bookedEndTime > parkingSpotEndTime)) | |
36 | + | then throw("time is out of range for parking spot") | |
37 | + | else { | |
38 | + | let existingRenter = getString(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter")) | |
39 | + | if ((existingRenter != unit)) | |
40 | + | then throw("parking spot has already been booked") | |
41 | + | else if (if ((bookedStartTime == parkingSpotStartTime)) | |
42 | + | then (bookedEndTime == parkingSpotEndTime) | |
43 | + | else false) | |
44 | + | then [StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_slicetest0"), desiredSlice)] | |
42 | 45 | else if (if ((bookedStartTime == parkingSpotStartTime)) | |
43 | - | then (bookedEndTime | |
46 | + | then (bookedEndTime != parkingSpotEndTime) | |
44 | 47 | else false) | |
45 | - | then [StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_ | |
46 | - | else if (if (( | |
47 | - | then ( | |
48 | + | 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))) | |
49 | + | else if (if ((bookedEndTime == parkingSpotEndTime)) | |
50 | + | then (bookedStartTime != parkingSpotStartTime) | |
48 | 51 | else false) | |
49 | - | 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))) | |
50 | - | else if (if ((bookedEndTime == parkingSpotEndTime)) | |
51 | - | then (bookedStartTime != parkingSpotStartTime) | |
52 | - | else false) | |
53 | - | 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))) | |
54 | - | 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))) | |
55 | - | } | |
56 | - | } | |
57 | - | } | |
52 | + | 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))) | |
53 | + | 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))) | |
54 | + | } | |
55 | + | } | |
58 | 56 | ||
59 | 57 | ||
60 | 58 | @Verifier(tx) | |
61 | 59 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
62 | 60 |
github/deemru/w8io/169f3d6 38.20 ms ◑![]()