tx · 9HFueuBWBdUKbrMnnAs2ksoRt1eZ5fvW9QzjKwygHeKH

3NBLe4xzkgpMKGWL8QgqDkVnkxHnLsGsi3a:  -0.09000000 Waves

2021.07.20 16:28 [1621999] smart account 3NBLe4xzkgpMKGWL8QgqDkVnkxHnLsGsi3a > SELF 0.00000000 Waves

{ "type": 13, "id": "9HFueuBWBdUKbrMnnAs2ksoRt1eZ5fvW9QzjKwygHeKH", "fee": 9000000, "feeAssetId": null, "timestamp": 1626787679363, "version": 2, "chainId": 84, "sender": "3NBLe4xzkgpMKGWL8QgqDkVnkxHnLsGsi3a", "senderPublicKey": "GrooFTfmnAwZPXYbL5faJSzKDpyALDvuhUU9V5ztzFxy", "proofs": [ "58U8U7SqMriGUmzUJf3HYrGFnBAm3i6rvkrVtN9jjiNRgBsz8ZWczq3E7uGF1e742u7QnwopP5okd5wahy5RG1HN" ], "script": "base64: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YXJraW5nU3BvdElkBAAAABVwYXJraW5nU3BvdFBheW91dFRpbWUJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAANcGFya2luZ1Nwb3RJZAIAAAALX3BheW91dFRpbWUEAAAABW93bmVyCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAADXBhcmtpbmdTcG90SWQCAAAABl9vd25lcgQAAAAQcGF5ZWRQYXJraW5nU3BvdAkABBsAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAADXBhcmtpbmdTcG90SWQCAAAABl9wYXllZAQAAAAPYXZhaWxhYmxlUGF5b3V0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAADXBhcmtpbmdTcG90SWQCAAAAEF9hdmFpbGFibGVQYXlvdXQEAAAAC2N1cnJlbnRUaW1lCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAMJAQAAAAIhPQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAVvd25lcgkAAAIAAAABAgAAACtjYWxsZXIgZG9lcyBub3QgbWF0Y2ggb3duZXIgb2YgcGFya2luZyBzcG90AwkAAGYAAAACBQAAABVwYXJraW5nU3BvdFBheW91dFRpbWUJAABpAAAAAgUAAAALY3VycmVudFRpbWUAAAAAAAAAA+gJAAACAAAAAQIAAAA6cGF5b3V0IGNhbiBvbmx5IGhhcHBlbiBvbmUgaG91ciBhZnRlciBwYXJraW5nIHNwb3QgZW5kdGltZQMJAAAAAAAAAgUAAAAPYXZhaWxhYmxlUGF5b3V0AAAAAAAAAAAACQAAAgAAAAECAAAAH2F2YWlsYWJsZSBwYXlvdXQgaXMgMCwgc2tpcHBpbmcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAANcGFya2luZ1Nwb3RJZAIAAAAQX2F2YWlsYWJsZVBheW91dAAAAAAAAAAAAAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAD2F2YWlsYWJsZVBheW91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IGNvbXBsYWludCwgcGxlYXNlIHJlc29sdmUgaXQgZmlyc3QDCQAAAAAAAAIFAAAAFXBheWVkUGFya2luZ1Nwb3RTbGljZQYJAAACAAAAAQIAAAAtc2xpY2UgaGFzIGFscmVhZHkgYmVlbiBwYXllZCwgZGVueWluZyBwYXltZW50AwkAAAAAAAACBQAAABBwYXllZFBhcmtpbmdTcG90BgkAAAIAAAABAgAAADp3aG9sZSBwYXJraW5nIHNwb3QgaGFzIGFscmVhZHkgYmVlbiBwYXllZCwgZGVueWluZyBwYXltZW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADXBhcmtpbmdTcG90SWQCAAAAEF9hdmFpbGFibGVQYXlvdXQJAABlAAAAAgUAAAAPYXZhaWxhYmxlUGF5b3V0BQAAAAlzbGljZUNvc3QJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAlzbGljZUNvc3QFAAAABHVuaXQJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAADXBhcmtpbmdTcG90SWQCAAAAB19zbGljZV8JAAGkAAAAAQUAAAAFc2xpY2UCAAAABl9wYXllZAYFAAAAA25pbAAAAAFpAQAAABRib29rUGFya2luZ1Nwb3RTbGljZQAAAAUAAAANcGFya2luZ1Nwb3RJZAAAAAxkZXNpcmVkU2xpY2UAAAAJc3RhcnRUaW1lAAAAB2VuZFRpbWUAAAAGcmVudGVyBAAAAAdwYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAA9ib29rZWRTdGFydFRpbWUJAABlAAAAAgUAAAAJc3RhcnRUaW1lCQAAagAAAAIFAAAACXN0YXJ0VGltZQAAAAAAAAAOEAQAAAANYm9va2VkRW5kVGltZQkAAGUAAAACBQAAAAdlbmRUaW1lCQAAagAAAAIFAAAAB2VuZFRpbWUAAAAAAAAADhAEAAAAFHBhcmtpbmdTcG90U3RhcnRUaW1lCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAAC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AAROAAAAAgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAA1wYXJraW5nU3BvdElkAgAAAAdfc2xpY2VfCQABpAAAAAEFAAAADGRlc2lyZWRTbGljZQIAAAAHX3JlbnRlcgUAAAAGcmVudGVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAA1wYXJraW5nU3BvdElkAgAAAAdfc2xpY2VfCQABpAAAAAEFAAAADGRlc2lyZWRTbGljZQIAAAAKX3N0YXJ0VGltZQUAAAAPYm9va2VkU3RhcnRUaW1lCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAA1wYXJraW5nU3BvdElkAgAAAAdfc2xpY2VfCQABpAAAAAEFAAAADGRlc2lyZWRTbGljZQIAAAAIX2VuZFRpbWUFAAAADWJvb2tlZEVuZFRpbWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAANcGFya2luZ1Nwb3RJZAIAAAAGX3NsaWNlCQAAZAAAAAIFAAAADWV4aXN0aW5nU2xpY2UAAAAAAAAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAANcGFya2luZ1Nwb3RJZAIAAAAQX2F2YWlsYWJsZVBheW91dAkAAGQAAAACBQAAAA9hdmFpbGFibGVQYXlvdXQFAAAACXRvdGFsQ29zdAUAAAADbmlsCQEAAAAWY3JlYXRlUGFya2luZ1Nwb3RTbGljZQAAAAQFAAAADXBhcmtpbmdTcG90SWQFAAAAFHBhcmtpbmdTcG90U3RhcnRUaW1lBQAAAA9ib29rZWRTdGFydFRpbWUJAABkAAAAAgUAAAANZXhpc3RpbmdTbGljZQAAAAAAAAAAAQkBAAAAFmNyZWF0ZVBhcmtpbmdTcG90U2xpY2UAAAAEBQAAAA1wYXJraW5nU3BvdElkBQAAAA1ib29rZWRFbmRUaW1lBQAAABJwYXJraW5nU3BvdEVuZFRpbWUJAABkAAAAAgUAAAANZXhpc3RpbmdTbGljZQAAAAAAAAAAAgAAAAFpAQAAAAt1cGxvYWRJbWFnZQAAAAQAAAANcGFya2luZ1Nwb3RJZAAAAAVpbmRleAAAAAVjaHVuawAAAA5udW1iZXJPZkNodW5rcwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgUAAAANcGFya2luZ1Nwb3RJZAIAAAAHX2NodW5rXwkAAaQAAAABBQAAAAVpbmRleAUAAAAFY2h1bmsJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAANcGFya2luZ1Nwb3RJZAIAAAARX251bWJlcl9vZl9jaHVua3MFAAAADm51bWJlck9mQ2h1bmtzBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleVkWfnA=", "height": 1621999, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EdYXWUKxzRR5K8yhT72vkE3wfCphQL5qZxgRY6cYgC5N Next: 61NhCjsp6wkaeCXEg6TDsQaFtEbxD6XQCzpBRC6bJV5Z Diff:
OldNewDifferences
4646 let currentTime = lastBlock.timestamp
4747 if ((toString(i.caller) != owner))
4848 then throw("caller does not match owner of parking spot")
49- else if ((((currentTime / 1000) + 3600) > parkingSpotPayoutTime))
49+ else if (((currentTime / 1000) > parkingSpotPayoutTime))
5050 then throw("parking spot payout time is due, please cash out all slices at once")
51- else if ((parkingSpotEndTime > ((currentTime / 1000) + 3600)))
51+ else if (((parkingSpotEndTime + 3600) > (currentTime / 1000)))
5252 then throw("you have to wait one hour, until you can receive the payment for this slice")
5353 else if ((complaint != unit))
5454 then throw("there is an active complaint, please resolve it first")
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), BooleanEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_payed"), false)]
55
66
77 @Callable(i)
88 func createParkingSpot (lat,long,startTime,endTime,cost,description) = {
99 let roundedStartTime = (startTime - (startTime % 3600))
1010 let roundedEndTime = (endTime - (endTime % 3600))
1111 ([StringEntry((toBase58String(i.transactionId) + "_owner"), toString(i.caller)), StringEntry((toBase58String(i.transactionId) + "_lat"), lat), StringEntry((toBase58String(i.transactionId) + "_long"), long), IntegerEntry((toBase58String(i.transactionId) + "_cost"), cost), IntegerEntry((toBase58String(i.transactionId) + "_slice"), 0), IntegerEntry((toBase58String(i.transactionId) + "_payoutTime"), (roundedEndTime + 3600)), IntegerEntry((toBase58String(i.transactionId) + "_availablePayout"), 0), IntegerEntry((toBase58String(i.transactionId) + "_blockedPayout"), 0), StringEntry((toBase58String(i.transactionId) + "_description"), description)] ++ createParkingSpotSlice(toBase58String(i.transactionId), roundedStartTime, roundedEndTime, 0))
1212 }
1313
1414
1515
1616 @Callable(i)
1717 func payoutParkingSpot (parkingSpotId) = {
1818 let parkingSpotPayoutTime = getIntegerValue(this, (parkingSpotId + "_payoutTime"))
1919 let owner = getStringValue(this, (parkingSpotId + "_owner"))
2020 let payedParkingSpot = getBoolean(this, (parkingSpotId + "_payed"))
2121 let availablePayout = getIntegerValue(this, (parkingSpotId + "_availablePayout"))
2222 let currentTime = lastBlock.timestamp
2323 if ((toString(i.caller) != owner))
2424 then throw("caller does not match owner of parking spot")
2525 else if ((parkingSpotPayoutTime > (currentTime / 1000)))
2626 then throw("payout can only happen one hour after parking spot endtime")
2727 else if ((availablePayout == 0))
2828 then throw("available payout is 0, skipping")
2929 else [IntegerEntry((parkingSpotId + "_availablePayout"), 0), ScriptTransfer(i.caller, availablePayout, unit), BooleanEntry((parkingSpotId + "_payed"), true)]
3030 }
3131
3232
3333
3434 @Callable(i)
3535 func payoutParkingSpotSlice (parkingSpotId,slice) = {
3636 let parkingSpotStartTime = getIntegerValue(this, (((parkingSpotId + "_slice_") + toString(slice)) + "_startTime"))
3737 let parkingSpotEndTime = getIntegerValue(this, (((parkingSpotId + "_slice_") + toString(slice)) + "_endTime"))
3838 let parkingSpotPayoutTime = getIntegerValue(this, (parkingSpotId + "_payoutTime"))
3939 let costPerHour = getIntegerValue(this, (parkingSpotId + "_cost"))
4040 let sliceCost = ((costPerHour * (parkingSpotEndTime - parkingSpotStartTime)) / 3600)
4141 let owner = getStringValue(this, (parkingSpotId + "_owner"))
4242 let complaint = getString(this, (((parkingSpotId + "_slice_") + toString(slice)) + "_complaint"))
4343 let payedParkingSpotSlice = getBooleanValue(this, (((parkingSpotId + "_slice_") + toString(slice)) + "_payed"))
4444 let payedParkingSpot = getBoolean(this, (parkingSpotId + "_payed"))
4545 let availablePayout = getIntegerValue(this, (parkingSpotId + "_availablePayout"))
4646 let currentTime = lastBlock.timestamp
4747 if ((toString(i.caller) != owner))
4848 then throw("caller does not match owner of parking spot")
49- else if ((((currentTime / 1000) + 3600) > parkingSpotPayoutTime))
49+ else if (((currentTime / 1000) > parkingSpotPayoutTime))
5050 then throw("parking spot payout time is due, please cash out all slices at once")
51- else if ((parkingSpotEndTime > ((currentTime / 1000) + 3600)))
51+ else if (((parkingSpotEndTime + 3600) > (currentTime / 1000)))
5252 then throw("you have to wait one hour, until you can receive the payment for this slice")
5353 else if ((complaint != unit))
5454 then throw("there is an active complaint, please resolve it first")
5555 else if ((payedParkingSpotSlice == true))
5656 then throw("slice has already been payed, denying payment")
5757 else if ((payedParkingSpot == true))
5858 then throw("whole parking spot has already been payed, denying payment")
5959 else [IntegerEntry((parkingSpotId + "_availablePayout"), (availablePayout - sliceCost)), ScriptTransfer(i.caller, sliceCost, unit), BooleanEntry((((parkingSpotId + "_slice_") + toString(slice)) + "_payed"), true)]
6060 }
6161
6262
6363
6464 @Callable(i)
6565 func bookParkingSpotSlice (parkingSpotId,desiredSlice,startTime,endTime,renter) = {
6666 let payment = value(i.payments[0])
6767 let bookedStartTime = (startTime - (startTime % 3600))
6868 let bookedEndTime = (endTime - (endTime % 3600))
6969 let parkingSpotStartTime = getIntegerValue(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_startTime"))
7070 let parkingSpotEndTime = getIntegerValue(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_endTime"))
7171 let existingSlice = getIntegerValue(this, (parkingSpotId + "_slice"))
7272 let costPerHour = getIntegerValue(this, (parkingSpotId + "_cost"))
7373 let totalCost = ((costPerHour * (bookedEndTime - bookedStartTime)) / 3600)
7474 let availablePayout = getIntegerValue(this, (parkingSpotId + "_availablePayout"))
7575 let existingRenter = getString(this, (((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"))
7676 let currentTime = (lastBlock.timestamp / 1000)
7777 if (!(isDefined(payment)))
7878 then throw("no payment defined")
7979 else if ((payment.assetId != unit))
8080 then throw("payment should be in waves")
8181 else if ((payment.amount != totalCost))
8282 then throw((((("payment does not match cost, got '" + toString(payment.amount)) + "' Waves, excpected: '") + toString(totalCost)) + "' Waves."))
8383 else if (if ((parkingSpotStartTime > bookedStartTime))
8484 then true
8585 else (bookedEndTime > parkingSpotEndTime))
8686 then throw("time is out of range for parking spot")
8787 else if ((existingRenter != unit))
8888 then throw("parking spot has already been booked")
8989 else if (if ((bookedStartTime == parkingSpotStartTime))
9090 then (bookedEndTime == parkingSpotEndTime)
9191 else false)
9292 then [StringEntry((((parkingSpotId + "_slice_") + toString(desiredSlice)) + "_renter"), renter), IntegerEntry((parkingSpotId + "_availablePayout"), (availablePayout + totalCost))]
9393 else if (if ((bookedStartTime == parkingSpotStartTime))
9494 then (bookedEndTime != parkingSpotEndTime)
9595 else false)
9696 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)), IntegerEntry((parkingSpotId + "_availablePayout"), (availablePayout + totalCost))] ++ createParkingSpotSlice(parkingSpotId, bookedEndTime, parkingSpotEndTime, (existingSlice + 1)))
9797 else if (if ((bookedEndTime == parkingSpotEndTime))
9898 then (bookedStartTime != parkingSpotStartTime)
9999 else false)
100100 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)), IntegerEntry((parkingSpotId + "_availablePayout"), (availablePayout + totalCost))] ++ createParkingSpotSlice(parkingSpotId, parkingSpotStartTime, bookedStartTime, (existingSlice + 1)))
101101 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)), IntegerEntry((parkingSpotId + "_availablePayout"), (availablePayout + totalCost))] ++ createParkingSpotSlice(parkingSpotId, parkingSpotStartTime, bookedStartTime, (existingSlice + 1))) ++ createParkingSpotSlice(parkingSpotId, bookedEndTime, parkingSpotEndTime, (existingSlice + 2)))
102102 }
103103
104104
105105
106106 @Callable(i)
107107 func uploadImage (parkingSpotId,index,chunk,numberOfChunks) = [StringEntry(((parkingSpotId + "_chunk_") + toString(index)), chunk), IntegerEntry((parkingSpotId + "_number_of_chunks"), numberOfChunks)]
108108
109109
110110 @Verifier(tx)
111111 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
112112

github/deemru/w8io/169f3d6 
48.93 ms