tx · 4zZPuzjT7pDRrT5qzgCEdpapYTHkf2bqKGcN5LKSbgbG 3MzgLbskN82suZgkmqTvzQxDtZfjQfX1DLp: -0.00200000 Waves 2024.11.11 03:08 [3366044] smart account 3MzgLbskN82suZgkmqTvzQxDtZfjQfX1DLp > SELF 0.00000000 Waves
{ "type": 13, "id": "4zZPuzjT7pDRrT5qzgCEdpapYTHkf2bqKGcN5LKSbgbG", "fee": 200000, "feeAssetId": null, "timestamp": 1731283721032, "version": 1, "sender": "3MzgLbskN82suZgkmqTvzQxDtZfjQfX1DLp", "senderPublicKey": "B5p5JF1Hn7k2YwGxQxgFre8bM5pd7N2c6wPdyKdLzzd6", "proofs": [ "4LAU1dY92yi7PLUnWsLBkEdnCNQvrd9UnK4F6AuDQpKycxXwnZTVfSSjwZfwaWw2CpG4e6aKZrJVCZekk8aZ6jcG" ], "script": "base64:CAIHCAISAwoBCAABAWkBGGNoZWNrQW5kSW5jcmVtZW50Q291bnRlcgEIZnVuY05hbWUECWhvdXJseUtleQkArAICBQhmdW5jTmFtZQIOX2hvdXJseVR4Q291bnQECGRhaWx5S2V5CQCsAgIFCGZ1bmNOYW1lAg1fZGFpbHlUeENvdW50BA1ob3VybHlUeENvdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMFCWhvdXJseUtleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQMZGFpbHlUeENvdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMFCGRhaWx5S2V5AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAtob3VybHlMaW1pdAABBApkYWlseUxpbWl0AAIDCQBnAgUNaG91cmx5VHhDb3VudAULaG91cmx5TGltaXQJAAIBAhVIb3VybHkgbGltaXQgZXhjZWVkZWQDCQBnAgUMZGFpbHlUeENvdW50BQpkYWlseUxpbWl0CQACAQIURGFpbHkgbGltaXQgZXhjZWVkZWQEDm5ld0hvdXJseUNvdW50CQBkAgUNaG91cmx5VHhDb3VudAABBA1uZXdEYWlseUNvdW50CQBkAgUMZGFpbHlUeENvdW50AAEEDXVwZGF0ZVJlc3VsdHMJAMwIAgkBDEludGVnZXJFbnRyeQIFCWhvdXJseUtleQUObmV3SG91cmx5Q291bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFCGRhaWx5S2V5BQ1uZXdEYWlseUNvdW50CQDMCAIJAQxCb29sZWFuRW50cnkCAgZzdGF0dXMGCQDMCAIJAQxJbnRlZ2VyRW50cnkCAg5uZXdIb3VybHlDb3VudAUObmV3SG91cmx5Q291bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgIHbWVzc2FnZQIWVHJhbnNhY3Rpb24gc3VjY2Vzc2Z1bAUDbmlsBAtjaGVja0hvdXJseQkAmggCBQR0aGlzBQlob3VybHlLZXkECmNoZWNrRGFpbHkJAJoIAgUEdGhpcwUIZGFpbHlLZXkEByRtYXRjaDAFC2NoZWNrSG91cmx5AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAQHJG1hdGNoMQUKY2hlY2tEYWlseQMJAAECBQckbWF0Y2gxAgNJbnQEAWIFByRtYXRjaDEDAwkAAAIFAWEFDm5ld0hvdXJseUNvdW50CQAAAgUBYgUNbmV3RGFpbHlDb3VudAcFDXVwZGF0ZVJlc3VsdHMJAAIBAhJEYXRhIHVwZGF0ZSBmYWlsZWQJAAIBAhlGYWlsZWQgdG8gZ2V0IGRhaWx5IGNvdW50CQACAQIaRmFpbGVkIHRvIGdldCBob3VybHkgY291bnQAepnB8g==", "chainId": 84, "height": 3366044, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CfgCYotALxRXTnzyYeyG3qhrCzh3naEXQJ17puEEucsr Next: B81zatPzSijH8aEbLqaahtCCjFQgfGc3AGb4Xm6rbngU Diff:
Old | New | Differences | |
---|---|---|---|
29 | 29 | let newHourlyCount = (hourlyTxCount + 1) | |
30 | 30 | let newDailyCount = (dailyTxCount + 1) | |
31 | 31 | let updateResults = [IntegerEntry(hourlyKey, newHourlyCount), IntegerEntry(dailyKey, newDailyCount), BooleanEntry("status", true), IntegerEntry("newHourlyCount", newHourlyCount), StringEntry("message", "Transaction successful")] | |
32 | - | updateResults | |
32 | + | let checkHourly = getInteger(this, hourlyKey) | |
33 | + | let checkDaily = getInteger(this, dailyKey) | |
34 | + | match checkHourly { | |
35 | + | case a: Int => | |
36 | + | match checkDaily { | |
37 | + | case b: Int => | |
38 | + | if (if ((a == newHourlyCount)) | |
39 | + | then (b == newDailyCount) | |
40 | + | else false) | |
41 | + | then updateResults | |
42 | + | else throw("Data update failed") | |
43 | + | case _ => | |
44 | + | throw("Failed to get daily count") | |
45 | + | } | |
46 | + | case _ => | |
47 | + | throw("Failed to get hourly count") | |
48 | + | } | |
33 | 49 | } | |
34 | 50 | } | |
35 | 51 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 8 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | ||
5 | 5 | ||
6 | 6 | @Callable(i) | |
7 | 7 | func checkAndIncrementCounter (funcName) = { | |
8 | 8 | let hourlyKey = (funcName + "_hourlyTxCount") | |
9 | 9 | let dailyKey = (funcName + "_dailyTxCount") | |
10 | 10 | let hourlyTxCount = match getInteger(this, hourlyKey) { | |
11 | 11 | case a: Int => | |
12 | 12 | a | |
13 | 13 | case _ => | |
14 | 14 | 0 | |
15 | 15 | } | |
16 | 16 | let dailyTxCount = match getInteger(this, dailyKey) { | |
17 | 17 | case a: Int => | |
18 | 18 | a | |
19 | 19 | case _ => | |
20 | 20 | 0 | |
21 | 21 | } | |
22 | 22 | let hourlyLimit = 1 | |
23 | 23 | let dailyLimit = 2 | |
24 | 24 | if ((hourlyTxCount >= hourlyLimit)) | |
25 | 25 | then throw("Hourly limit exceeded") | |
26 | 26 | else if ((dailyTxCount >= dailyLimit)) | |
27 | 27 | then throw("Daily limit exceeded") | |
28 | 28 | else { | |
29 | 29 | let newHourlyCount = (hourlyTxCount + 1) | |
30 | 30 | let newDailyCount = (dailyTxCount + 1) | |
31 | 31 | let updateResults = [IntegerEntry(hourlyKey, newHourlyCount), IntegerEntry(dailyKey, newDailyCount), BooleanEntry("status", true), IntegerEntry("newHourlyCount", newHourlyCount), StringEntry("message", "Transaction successful")] | |
32 | - | updateResults | |
32 | + | let checkHourly = getInteger(this, hourlyKey) | |
33 | + | let checkDaily = getInteger(this, dailyKey) | |
34 | + | match checkHourly { | |
35 | + | case a: Int => | |
36 | + | match checkDaily { | |
37 | + | case b: Int => | |
38 | + | if (if ((a == newHourlyCount)) | |
39 | + | then (b == newDailyCount) | |
40 | + | else false) | |
41 | + | then updateResults | |
42 | + | else throw("Data update failed") | |
43 | + | case _ => | |
44 | + | throw("Failed to get daily count") | |
45 | + | } | |
46 | + | case _ => | |
47 | + | throw("Failed to get hourly count") | |
48 | + | } | |
33 | 49 | } | |
34 | 50 | } | |
35 | 51 | ||
36 | 52 |
github/deemru/w8io/026f985 13.77 ms ◑