tx · 5TxjzkFww5CU9Uiqtggwwj6RcrRUrbKQh26ZbedTpcDu 3N8nB5XeXcXTUDeiH6657UHa3wHa2rbZfDk: -0.01500000 Waves 2021.06.04 18:36 [1555809] smart account 3N8nB5XeXcXTUDeiH6657UHa3wHa2rbZfDk > SELF 0.00000000 Waves
{ "type": 13, "id": "5TxjzkFww5CU9Uiqtggwwj6RcrRUrbKQh26ZbedTpcDu", "fee": 1500000, "feeAssetId": null, "timestamp": 1622821014899, "version": 2, "chainId": 84, "sender": "3N8nB5XeXcXTUDeiH6657UHa3wHa2rbZfDk", "senderPublicKey": "BfXK2ez9xjdgWtoFNsnaGPRFjHcFixy3UUrQ2iN8wVfX", "proofs": [ "2dU7DqwH3evC2zozsEhrRPJk9vW57rGuqieePUGQ4rYyqekm3ZZWpihLM64E92siNCiDQW5BnR8D1PdJG6HvmnZA" ], "script": "base64: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", "height": 1555809, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7AHHT3XXpje6pfzqQLGsDR2wQHWDUgxkH36ajRVLms2c Next: BSA9esCEXHMnRKDvhLYPjbdTaXjHwXkXWAPUzSZ6X6kR Diff:
Old | New | Differences | |
---|---|---|---|
8 | 8 | func createParkingSpot (owner,lat,long,startTime,endTime,cost) = { | |
9 | 9 | let bookedStartTime = (startTime - (startTime % 3600)) | |
10 | 10 | let bookedEndTime = (endTime - (endTime % 3600)) | |
11 | - | let data = createParkingSpotSlice(toBase64String(i.transactionId), bookedStartTime, bookedEndTime, 0) | |
12 | - | ([StringEntry((toBase58String(i.transactionId) + "_owner"), owner), IntegerEntry((toBase58String(i.transactionId) + "_lat"), lat), IntegerEntry((toBase58String(i.transactionId) + "_long"), long), IntegerEntry((toBase58String(i.transactionId) + "_cost"), cost), IntegerEntry((toBase58String(i.transactionId) + "_slice"), 0)] ++ data) | |
11 | + | ([StringEntry((toBase58String(i.transactionId) + "_owner"), owner), IntegerEntry((toBase58String(i.transactionId) + "_lat"), lat), IntegerEntry((toBase58String(i.transactionId) + "_long"), long), IntegerEntry((toBase58String(i.transactionId) + "_cost"), cost), IntegerEntry((toBase58String(i.transactionId) + "_slice"), 0)] ++ createParkingSpotSlice(toBase64String(i.transactionId), bookedStartTime, bookedEndTime, 0)) | |
13 | 12 | } | |
14 | 13 | ||
15 | 14 | ||
33 | 32 | else false) | |
34 | 33 | then [StringEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_renter"), renter)] | |
35 | 34 | else if ((bookedStartTime == parkingSpotStartTime)) | |
36 | - | then ([StringEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_renter"), renter)] ++ createParkingSpotSlice(parkingSpotId, bookedEndTime, parkingSpotEndTime, (slice + 1))) | |
35 | + | then ([StringEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_startTime"), bookedStartTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_startTime"), bookedEndTime)] ++ createParkingSpotSlice(parkingSpotId, bookedEndTime, parkingSpotEndTime, (slice + 1))) | |
37 | 36 | else if ((bookedEndTime == parkingSpotEndTime)) | |
38 | - | then ([StringEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_renter"), renter)] ++ createParkingSpotSlice(parkingSpotId, parkingSpotStartTime, bookedStartTime, (slice + 1))) | |
39 | - | else (([StringEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_renter"), renter)] ++ createParkingSpotSlice(parkingSpotId, parkingSpotStartTime, bookedStartTime, (slice + 1))) ++ createParkingSpotSlice(parkingSpotId, bookedEndTime, parkingSpotEndTime, (slice + 2))) | |
37 | + | then ([StringEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_startTime"), bookedStartTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_startTime"), bookedEndTime)] ++ createParkingSpotSlice(parkingSpotId, parkingSpotStartTime, bookedStartTime, (slice + 1))) | |
38 | + | else (([StringEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_startTime"), bookedStartTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_startTime"), bookedEndTime)] ++ createParkingSpotSlice(parkingSpotId, parkingSpotStartTime, bookedStartTime, (slice + 1))) ++ createParkingSpotSlice(parkingSpotId, bookedEndTime, parkingSpotEndTime, (slice + 2))) | |
40 | 39 | } | |
41 | 40 | } | |
42 | 41 |
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 bookedStartTime = (startTime - (startTime % 3600)) | |
10 | 10 | let bookedEndTime = (endTime - (endTime % 3600)) | |
11 | - | let data = createParkingSpotSlice(toBase64String(i.transactionId), bookedStartTime, bookedEndTime, 0) | |
12 | - | ([StringEntry((toBase58String(i.transactionId) + "_owner"), owner), IntegerEntry((toBase58String(i.transactionId) + "_lat"), lat), IntegerEntry((toBase58String(i.transactionId) + "_long"), long), IntegerEntry((toBase58String(i.transactionId) + "_cost"), cost), IntegerEntry((toBase58String(i.transactionId) + "_slice"), 0)] ++ data) | |
11 | + | ([StringEntry((toBase58String(i.transactionId) + "_owner"), owner), IntegerEntry((toBase58String(i.transactionId) + "_lat"), lat), IntegerEntry((toBase58String(i.transactionId) + "_long"), long), IntegerEntry((toBase58String(i.transactionId) + "_cost"), cost), IntegerEntry((toBase58String(i.transactionId) + "_slice"), 0)] ++ createParkingSpotSlice(toBase64String(i.transactionId), bookedStartTime, bookedEndTime, 0)) | |
13 | 12 | } | |
14 | 13 | ||
15 | 14 | ||
16 | 15 | ||
17 | 16 | @Callable(i) | |
18 | 17 | func bookParkingSpotSlice (parkingSpotId,slice,startTime,endTime,renter) = { | |
19 | 18 | let bookedStartTime = (startTime - (startTime % 3600)) | |
20 | 19 | let bookedEndTime = (startTime - (startTime % 3600)) | |
21 | 20 | let parkingSpotStartTime = getIntegerValue(this, (((parkingSpotId + "_slice_") + toString(slice)) + "_startTime")) | |
22 | 21 | let parkingSpotEndTime = getIntegerValue(this, (((parkingSpotId + "_slice_") + toString(slice)) + "_endTime")) | |
23 | 22 | if (if ((parkingSpotStartTime > bookedStartTime)) | |
24 | 23 | then true | |
25 | 24 | else ((bookedStartTime + 3600) > parkingSpotEndTime)) | |
26 | 25 | then throw("time is out of range for parking spot") | |
27 | 26 | else { | |
28 | 27 | let existingRenter = getString(this, (((parkingSpotId + "_slice_") + toString(slice)) + "_renter")) | |
29 | 28 | if ((existingRenter != unit)) | |
30 | 29 | then throw("parking spot has already been booked") | |
31 | 30 | else if (if ((bookedStartTime == parkingSpotStartTime)) | |
32 | 31 | then (bookedStartTime == parkingSpotEndTime) | |
33 | 32 | else false) | |
34 | 33 | then [StringEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_renter"), renter)] | |
35 | 34 | else if ((bookedStartTime == parkingSpotStartTime)) | |
36 | - | then ([StringEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_renter"), renter)] ++ createParkingSpotSlice(parkingSpotId, bookedEndTime, parkingSpotEndTime, (slice + 1))) | |
35 | + | then ([StringEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_startTime"), bookedStartTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_startTime"), bookedEndTime)] ++ createParkingSpotSlice(parkingSpotId, bookedEndTime, parkingSpotEndTime, (slice + 1))) | |
37 | 36 | else if ((bookedEndTime == parkingSpotEndTime)) | |
38 | - | then ([StringEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_renter"), renter)] ++ createParkingSpotSlice(parkingSpotId, parkingSpotStartTime, bookedStartTime, (slice + 1))) | |
39 | - | else (([StringEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_renter"), renter)] ++ createParkingSpotSlice(parkingSpotId, parkingSpotStartTime, bookedStartTime, (slice + 1))) ++ createParkingSpotSlice(parkingSpotId, bookedEndTime, parkingSpotEndTime, (slice + 2))) | |
37 | + | then ([StringEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_startTime"), bookedStartTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_startTime"), bookedEndTime)] ++ createParkingSpotSlice(parkingSpotId, parkingSpotStartTime, bookedStartTime, (slice + 1))) | |
38 | + | else (([StringEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_renter"), renter), IntegerEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_startTime"), bookedStartTime), IntegerEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_startTime"), bookedEndTime)] ++ createParkingSpotSlice(parkingSpotId, parkingSpotStartTime, bookedStartTime, (slice + 1))) ++ createParkingSpotSlice(parkingSpotId, bookedEndTime, parkingSpotEndTime, (slice + 2))) | |
40 | 39 | } | |
41 | 40 | } | |
42 | 41 | ||
43 | 42 | ||
44 | 43 | @Verifier(tx) | |
45 | 44 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
46 | 45 |
github/deemru/w8io/169f3d6 32.09 ms ◑![]()