tx · AuWQBNTbpHNsfeXZ7JdsNzTq2TmW9ZgJqbocuevNvLpc

3N8YkRZsgDVNAxtmwU1F65EpcYMb8f7QPos:  -0.01400000 Waves

2024.05.28 10:46 [3125548] smart account 3N8YkRZsgDVNAxtmwU1F65EpcYMb8f7QPos > SELF 0.00000000 Waves

{ "type": 13, "id": "AuWQBNTbpHNsfeXZ7JdsNzTq2TmW9ZgJqbocuevNvLpc", "fee": 1400000, "feeAssetId": null, "timestamp": 1716882376737, "version": 2, "chainId": 84, "sender": "3N8YkRZsgDVNAxtmwU1F65EpcYMb8f7QPos", "senderPublicKey": "F7SLwr7RYVQpyocmVScFC6ooaAwewaGq6wNRDYvyiPj1", "proofs": [ "5Qa91vc28UN95MkvFZE54T6BW4uLMxKXSmswBFaDgTutnUC6GpES9Ad2oTCjeCUySJwFycfNCM68rhKzgQLyiZ9h" ], "script": "base64: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AAAABml0ZW1JZAAAAAAAAAAAAQQAAAAHYWRyZXNzMgkBAAAAEXNlYXJjaEZvckNvdW50ZXJzAAAAAgUAAAAGaXRlbUlkAAAAAAAAAAACBAAAAAdhZHJlc3MzCQEAAAARc2VhcmNoRm9yQ291bnRlcnMAAAACBQAAAAZpdGVtSWQAAAAAAAAAAAMJAARNAAAAAgkABE0AAAACCQAETQAAAAIFAAAAA25pbAUAAAAHYWRyZXNzMQUAAAAHYWRyZXNzMgUAAAAHYWRyZXNzMwMJAABnAAAAAgUAAAAHY291bnRlcgAAAAAAAAAAAgQAAAAHYWRyZXNzMQkBAAAAEXNlYXJjaEZvckNvdW50ZXJzAAAAAgUAAAAGaXRlbUlkAAAAAAAAAAABBAAAAAdhZHJlc3MyCQEAAAARc2VhcmNoRm9yQ291bnRlcnMAAAACBQAAAAZpdGVtSWQAAAAAAAAAAAIJAARNAAAAAgkABE0AAAACBQAAAANuaWwFAAAAB2FkcmVzczEFAAAAB2FkcmVzczIEAAAAB2FkcmVzczEJAQAAABFzZWFyY2hGb3JDb3VudGVycwAAAAIFAAAABml0ZW1JZAAAAAAAAAAAAQkABE0AAAACBQAAAANuaWwFAAAAB2FkcmVzczEFAAAACmFkcmVzc0xpc3QAAAADAAAAAWkBAAAAImFkanVzdFJhdGluZ3NBbmRQYXlvdXRQYXJ0aWNpcGFudHMAAAAEAAAABml0ZW1JZAAAAAthZGRyZXNzTGlzdAAAABFsYXN0Q2FsbGVyQWRkcmVzcwAAAA9maW5hbFByZWRpY3Rpb24KAQAAABF1cGRhdGVSYXRpbmdzRnVuYwAAAAIAAAAFYWNjdW0AAAAHYWRkcmVzcwQAAAAGcmF0aW5nCQEAAAAPc2VhcmNoRm9yUmF0aW5nAAAAAQUAAAAHYWRkcmVzcwQAAAAKcHJlZGljdGlvbgkBAAAAGnNlYXJjaEZvckFkZHJlc3NQcmVkaWN0aW9uAAAAAgUAAAAGaXRlbUlkBQAAAAdhZGRyZXNzBAAAAA11cGRhdGVkUmF0aW5nAwkAAAAAAAACBQAAAApwcmVkaWN0aW9uBQAAAA9maW5hbFByZWRpY3Rpb24JAABkAAAAAgUAAAAGcmF0aW5nBQAAAA5yYXRlQWRqdXN0bWVudAkAAGUAAAACBQAAAAZyYXRpbmcFAAAADnJhdGVBZGp1c3RtZW50BAAAAAZwYXlvdXQDCQAAAAAAAAIFAAAACnByZWRpY3Rpb24FAAAAD2ZpbmFsUHJlZGljdGlvbgUAAAAMcGF5b3V0QW1vdW50AAAAAAAAAAAABAAAAA51cGRhdGVkRW50cmllcwkABE0AAAACBQAAAAVhY2N1bQkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAB2FkZHJlc3MFAAAADXVwZGF0ZWRSYXRpbmcDCQAAZgAAAAIFAAAABnBheW91dAAAAAAAAAAAAAkABE0AAAACBQAAAA51cGRhdGVkRW50cmllcwkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAB2FkZHJlc3MFAAAABnBheW91dAUAAAAHdG9rZW5JZAUAAAAOdXBkYXRlZEVudHJpZXMEAAAADnVwZGF0ZWRSYXRpbmdzCgAAAAACJGwFAAAAC2FkZHJlc3NMaXN0CgAAAAACJHMJAAGQAAAAAQUAAAACJGwKAAAAAAUkYWNjMAUAAAADbmlsCgEAAAAFJGYwXzEAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQEAAAARdXBkYXRlUmF0aW5nc0Z1bmMAAAACBQAAAAIkYQkAAZEAAAACBQAAAAIkbAUAAAACJGkKAQAAAAUkZjBfMgAAAAIAAAACJGEAAAACJGkDCQAAZwAAAAIFAAAAAiRpBQAAAAIkcwUAAAACJGEJAAACAAAAAQIAAAATTGlzdCBzaXplIGV4Y2VlZHMgNQkBAAAABSRmMF8yAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgUAAAAFJGFjYzAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUJAARNAAAAAgUAAAAOdXBkYXRlZFJhdGluZ3MJAQAAAAxCb29sZWFuRW50cnkAAAACCQABLAAAAAIFAAAABml0ZW1JZAIAAAAJX2FkanVzdGVkBgAAAAFpAQAAAA5zYXZlUHJlZGljdGlvbgAAAAIAAAAGaXRlbUlkAAAACnByZWRpY3Rpb24EAAAADGNsaWVudEFkcmVzcwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAADXNlYXJjaEZvclVzZXIEAAAAByRtYXRjaDAJAAQfAAAAAQUAAAAMY2xpZW50QWRyZXNzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAXMFAAAAByRtYXRjaDAFAAAAAXMCAAAADm5vIFVzZXIgZXhpc3RzBAAAAAxjbGllbnRSYXRpbmcJAQAAAA9zZWFyY2hGb3JSYXRpbmcAAAABBQAAAAxjbGllbnRBZHJlc3MDCQAAZwAAAAIFAAAADHJhdGluZ0N1dG9mZgUAAAAMY2xpZW50UmF0aW5nCQAAAgAAAAECAAAAKllvdSBhcmUgbm90IGFsbG93ZWQgdG8gcGFydGljaXBhdGUgYW55bW9yZQMJAAAAAAAAAgUAAAANc2VhcmNoRm9yVXNlcgIAAAAObm8gVXNlciBleGlzdHMJAAACAAAAAQIAAAATVXNlciBkb2VzIG5vdCBleGlzdAQAAAAQc2VhcmNoRm9yQ291bnRlcgQAAAAHJG1hdGNoMAkABB8AAAABCQABLAAAAAIFAAAABml0ZW1JZAIAAAAIX2NvdW50ZXIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwD//////////wMJAABnAAAAAgUAAAAQc2VhcmNoRm9yQ291bnRlcgAAAAAAAAAAAQQAAAAKYWRyZXNzTGlzdAkBAAAAFmZpbmRQcmVkaWN0aW9uQWRyZXNzZXMAAAACBQAAAAZpdGVtSWQFAAAAEHNlYXJjaEZvckNvdW50ZXIDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAKYWRyZXNzTGlzdAUAAAAMY2xpZW50QWRyZXNzCQAAAgAAAAECAAAAI1RoaXMgVXNlciBhbHJlYWR5IGdhdmUgYSBQcmVkaWN0aW9uBAAAABFwcmVkaWN0aW9uQ291bnRlcgQAAAAHJG1hdGNoMAkABB8AAAABCQABLAAAAAIFAAAABml0ZW1JZAIAAAASX3ByZWRpY3Rpb25Db3VudGVyAwkAAAEAAAACBQAAAAckbWF0Y2gw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", "height": 3125548, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BxBhUpX6MWk8mG8PzJh79gzuHYgpVyYbrAuQbsAPZ3Xb Next: 2w1WzjfYvBQKPaA4aiVcPiXmmzSLJXxVBGJzZ73R7gMX Diff:
OldNewDifferences
1313
1414 let payoutAmount = 100000000
1515
16+let ratingCutoff = 50
17+
1618 func searchForCounters (itemId,counter) = {
1719 let searchForCounters = match getString(((itemId + "_") + toString(counter))) {
1820 case s: String =>
2123 "No User"
2224 }
2325 searchForCounters
26+ }
27+
28+
29+func searchForRating (address) = {
30+ let rating = match getInteger(address) {
31+ case r: Int =>
32+ r
33+ case _ =>
34+ defaultRating
35+ }
36+ rating
2437 }
2538
2639
7790 @Callable(i)
7891 func adjustRatingsAndPayoutParticipants (itemId,addressList,lastCallerAddress,finalPrediction) = {
7992 func updateRatingsFunc (accum,address) = {
80- let rating = match getInteger(address) {
81- case r: Int =>
82- r
83- case _ =>
84- defaultRating
85- }
93+ let rating = searchForRating(address)
8694 let prediction = searchForAddressPrediction(itemId, address)
8795 let updatedRating = if ((prediction == finalPrediction))
8896 then (rating + rateAdjustment)
124132 case _ =>
125133 "no User exists"
126134 }
127- if ((searchForUser == "no User exists"))
128- then throw("User does not exist")
129- else {
130- let searchForCounter = match getInteger((itemId + "_counter")) {
131- case s: Int =>
132- s
133- case _ =>
134- -1
135- }
136- if ((searchForCounter >= 1))
137- then {
138- let adressList = findPredictionAdresses(itemId, searchForCounter)
139- if (containsElement(adressList, clientAdress))
140- then throw("This User already gave a Prediction")
141- else {
142- let predictionCounter = match getInteger((itemId + "_predictionCounter")) {
143- case s: Int =>
144- s
145- case _ =>
146- -1
147- }
148- let lastPredictionAdress = adressList[(size(adressList) - 1)]
149- let lastPrediction = match getString(((itemId + "_") + lastPredictionAdress)) {
150- case s: String =>
151- s
152- case _ =>
153- "no Prediction Found"
154- }
155- let newCounter = (searchForCounter + 1)
156- if ((lastPrediction == prediction))
157- then if (((predictionCounter + 1) == predictionMaxCounter))
158- then {
159- let invokeAdjustRating = invoke(this, "adjustRatingsAndPayoutParticipants", [itemId, adressList, clientAdress, prediction], nil)
160- if ((invokeAdjustRating != invokeAdjustRating))
161- then throw("Strict value is not equal to itself.")
162- else [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter + 1)), BooleanEntry((itemId + "_final"), true), BooleanEntry((itemId + "_cancelled"), false)]
163- }
164- else [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter + 1)), BooleanEntry((itemId + "_final"), false), BooleanEntry((itemId + "_cancelled"), false)]
165- else if ((newCounter >= maxCounter))
166- then [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter - 1)), BooleanEntry((itemId + "_cancelled"), true), BooleanEntry((itemId + "_final"), false)]
167- else if (((predictionCounter - 1) == -1))
168- then [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), 1), BooleanEntry((itemId + "_cancelled"), false), BooleanEntry((itemId + "_final"), false), StringEntry("test", lastPrediction), IntegerEntry("test2", size(adressList))]
169- else [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter - 1)), BooleanEntry((itemId + "_cancelled"), false), BooleanEntry((itemId + "_final"), false), StringEntry("test", lastPrediction), IntegerEntry("test2", size(adressList))]
170- }
171- }
172- else {
173- let searchForNewItem = match getString(("new_" + itemId)) {
174- case s: String =>
175- s
176- case _ =>
177- "not Found"
178- }
179- if ((searchForNewItem != itemId))
180- then throw("Item not Found")
181- else [StringEntry(((itemId + "_") + toString(1)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), 1), IntegerEntry((itemId + "_predictionCounter"), 1), DeleteEntry(("new_" + itemId)), StringEntry(("updated_" + itemId), itemId)]
182- }
183- }
135+ let clientRating = searchForRating(clientAdress)
136+ if ((ratingCutoff >= clientRating))
137+ then throw("You are not allowed to participate anymore")
138+ else if ((searchForUser == "no User exists"))
139+ then throw("User does not exist")
140+ else {
141+ let searchForCounter = match getInteger((itemId + "_counter")) {
142+ case s: Int =>
143+ s
144+ case _ =>
145+ -1
146+ }
147+ if ((searchForCounter >= 1))
148+ then {
149+ let adressList = findPredictionAdresses(itemId, searchForCounter)
150+ if (containsElement(adressList, clientAdress))
151+ then throw("This User already gave a Prediction")
152+ else {
153+ let predictionCounter = match getInteger((itemId + "_predictionCounter")) {
154+ case s: Int =>
155+ s
156+ case _ =>
157+ -1
158+ }
159+ let lastPredictionAdress = adressList[(size(adressList) - 1)]
160+ let lastPrediction = match getString(((itemId + "_") + lastPredictionAdress)) {
161+ case s: String =>
162+ s
163+ case _ =>
164+ "no Prediction Found"
165+ }
166+ let newCounter = (searchForCounter + 1)
167+ if ((lastPrediction == prediction))
168+ then if (((predictionCounter + 1) == predictionMaxCounter))
169+ then {
170+ let invokeAdjustRating = invoke(this, "adjustRatingsAndPayoutParticipants", [itemId, adressList, clientAdress, prediction], nil)
171+ if ((invokeAdjustRating != invokeAdjustRating))
172+ then throw("Strict value is not equal to itself.")
173+ else [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter + 1)), BooleanEntry((itemId + "_final"), true), BooleanEntry((itemId + "_cancelled"), false), ScriptTransfer(Address(fromBase58String(clientAdress)), payoutAmount, tokenId), IntegerEntry(clientAdress, (clientRating + 20))]
174+ }
175+ else [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter + 1)), BooleanEntry((itemId + "_final"), false), BooleanEntry((itemId + "_cancelled"), false)]
176+ else if ((newCounter >= maxCounter))
177+ then [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter - 1)), BooleanEntry((itemId + "_cancelled"), true), BooleanEntry((itemId + "_final"), false)]
178+ else if (((predictionCounter - 1) == -1))
179+ then [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), 1), BooleanEntry((itemId + "_cancelled"), false), BooleanEntry((itemId + "_final"), false), StringEntry("test", lastPrediction), IntegerEntry("test2", size(adressList))]
180+ else [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter - 1)), BooleanEntry((itemId + "_cancelled"), false), BooleanEntry((itemId + "_final"), false), StringEntry("test", lastPrediction), IntegerEntry("test2", size(adressList))]
181+ }
182+ }
183+ else {
184+ let searchForNewItem = match getString(("new_" + itemId)) {
185+ case s: String =>
186+ s
187+ case _ =>
188+ "not Found"
189+ }
190+ if ((searchForNewItem != itemId))
191+ then throw("Item not Found")
192+ else [StringEntry(((itemId + "_") + toString(1)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), 1), IntegerEntry((itemId + "_predictionCounter"), 1), DeleteEntry(("new_" + itemId)), StringEntry(("updated_" + itemId), itemId)]
193+ }
194+ }
184195 }
185196
186197
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let predictionMaxCounter = 3
55
66 let maxCounter = 6
77
88 let defaultRating = 100
99
1010 let rateAdjustment = 20
1111
1212 let tokenId = base58'8QGJvsXqJ43q5ksFymoPKF1NWWhwUfr2F7h52oeWgVhH'
1313
1414 let payoutAmount = 100000000
1515
16+let ratingCutoff = 50
17+
1618 func searchForCounters (itemId,counter) = {
1719 let searchForCounters = match getString(((itemId + "_") + toString(counter))) {
1820 case s: String =>
1921 s
2022 case _ =>
2123 "No User"
2224 }
2325 searchForCounters
26+ }
27+
28+
29+func searchForRating (address) = {
30+ let rating = match getInteger(address) {
31+ case r: Int =>
32+ r
33+ case _ =>
34+ defaultRating
35+ }
36+ rating
2437 }
2538
2639
2740 func searchForAddressPrediction (itemId,adress) = {
2841 let searchForPrediction = match getString(((itemId + "_") + adress)) {
2942 case s: String =>
3043 s
3144 case _ =>
3245 "Not Found"
3346 }
3447 searchForPrediction
3548 }
3649
3750
3851 func findPredictionAdresses (itemId,counter) = {
3952 let adressList = if ((counter >= 5))
4053 then {
4154 let adress1 = searchForCounters(itemId, 1)
4255 let adress2 = searchForCounters(itemId, 2)
4356 let adress3 = searchForCounters(itemId, 3)
4457 let adress4 = searchForCounters(itemId, 4)
4558 let adress5 = searchForCounters(itemId, 5)
4659 (((((nil :+ adress1) :+ adress2) :+ adress3) :+ adress4) :+ adress5)
4760 }
4861 else if ((counter >= 4))
4962 then {
5063 let adress1 = searchForCounters(itemId, 1)
5164 let adress2 = searchForCounters(itemId, 2)
5265 let adress3 = searchForCounters(itemId, 3)
5366 let adress4 = searchForCounters(itemId, 4)
5467 ((((nil :+ adress1) :+ adress2) :+ adress3) :+ adress4)
5568 }
5669 else if ((counter >= 3))
5770 then {
5871 let adress1 = searchForCounters(itemId, 1)
5972 let adress2 = searchForCounters(itemId, 2)
6073 let adress3 = searchForCounters(itemId, 3)
6174 (((nil :+ adress1) :+ adress2) :+ adress3)
6275 }
6376 else if ((counter >= 2))
6477 then {
6578 let adress1 = searchForCounters(itemId, 1)
6679 let adress2 = searchForCounters(itemId, 2)
6780 ((nil :+ adress1) :+ adress2)
6881 }
6982 else {
7083 let adress1 = searchForCounters(itemId, 1)
7184 (nil :+ adress1)
7285 }
7386 adressList
7487 }
7588
7689
7790 @Callable(i)
7891 func adjustRatingsAndPayoutParticipants (itemId,addressList,lastCallerAddress,finalPrediction) = {
7992 func updateRatingsFunc (accum,address) = {
80- let rating = match getInteger(address) {
81- case r: Int =>
82- r
83- case _ =>
84- defaultRating
85- }
93+ let rating = searchForRating(address)
8694 let prediction = searchForAddressPrediction(itemId, address)
8795 let updatedRating = if ((prediction == finalPrediction))
8896 then (rating + rateAdjustment)
8997 else (rating - rateAdjustment)
9098 let payout = if ((prediction == finalPrediction))
9199 then payoutAmount
92100 else 0
93101 let updatedEntries = (accum :+ IntegerEntry(address, updatedRating))
94102 if ((payout > 0))
95103 then (updatedEntries :+ ScriptTransfer(Address(fromBase58String(address)), payout, tokenId))
96104 else updatedEntries
97105 }
98106
99107 let updatedRatings = {
100108 let $l = addressList
101109 let $s = size($l)
102110 let $acc0 = nil
103111 func $f0_1 ($a,$i) = if (($i >= $s))
104112 then $a
105113 else updateRatingsFunc($a, $l[$i])
106114
107115 func $f0_2 ($a,$i) = if (($i >= $s))
108116 then $a
109117 else throw("List size exceeds 5")
110118
111119 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
112120 }
113121 (updatedRatings :+ BooleanEntry((itemId + "_adjusted"), true))
114122 }
115123
116124
117125
118126 @Callable(i)
119127 func savePrediction (itemId,prediction) = {
120128 let clientAdress = toString(i.caller)
121129 let searchForUser = match getInteger(clientAdress) {
122130 case s: Int =>
123131 s
124132 case _ =>
125133 "no User exists"
126134 }
127- if ((searchForUser == "no User exists"))
128- then throw("User does not exist")
129- else {
130- let searchForCounter = match getInteger((itemId + "_counter")) {
131- case s: Int =>
132- s
133- case _ =>
134- -1
135- }
136- if ((searchForCounter >= 1))
137- then {
138- let adressList = findPredictionAdresses(itemId, searchForCounter)
139- if (containsElement(adressList, clientAdress))
140- then throw("This User already gave a Prediction")
141- else {
142- let predictionCounter = match getInteger((itemId + "_predictionCounter")) {
143- case s: Int =>
144- s
145- case _ =>
146- -1
147- }
148- let lastPredictionAdress = adressList[(size(adressList) - 1)]
149- let lastPrediction = match getString(((itemId + "_") + lastPredictionAdress)) {
150- case s: String =>
151- s
152- case _ =>
153- "no Prediction Found"
154- }
155- let newCounter = (searchForCounter + 1)
156- if ((lastPrediction == prediction))
157- then if (((predictionCounter + 1) == predictionMaxCounter))
158- then {
159- let invokeAdjustRating = invoke(this, "adjustRatingsAndPayoutParticipants", [itemId, adressList, clientAdress, prediction], nil)
160- if ((invokeAdjustRating != invokeAdjustRating))
161- then throw("Strict value is not equal to itself.")
162- else [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter + 1)), BooleanEntry((itemId + "_final"), true), BooleanEntry((itemId + "_cancelled"), false)]
163- }
164- else [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter + 1)), BooleanEntry((itemId + "_final"), false), BooleanEntry((itemId + "_cancelled"), false)]
165- else if ((newCounter >= maxCounter))
166- then [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter - 1)), BooleanEntry((itemId + "_cancelled"), true), BooleanEntry((itemId + "_final"), false)]
167- else if (((predictionCounter - 1) == -1))
168- then [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), 1), BooleanEntry((itemId + "_cancelled"), false), BooleanEntry((itemId + "_final"), false), StringEntry("test", lastPrediction), IntegerEntry("test2", size(adressList))]
169- else [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter - 1)), BooleanEntry((itemId + "_cancelled"), false), BooleanEntry((itemId + "_final"), false), StringEntry("test", lastPrediction), IntegerEntry("test2", size(adressList))]
170- }
171- }
172- else {
173- let searchForNewItem = match getString(("new_" + itemId)) {
174- case s: String =>
175- s
176- case _ =>
177- "not Found"
178- }
179- if ((searchForNewItem != itemId))
180- then throw("Item not Found")
181- else [StringEntry(((itemId + "_") + toString(1)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), 1), IntegerEntry((itemId + "_predictionCounter"), 1), DeleteEntry(("new_" + itemId)), StringEntry(("updated_" + itemId), itemId)]
182- }
183- }
135+ let clientRating = searchForRating(clientAdress)
136+ if ((ratingCutoff >= clientRating))
137+ then throw("You are not allowed to participate anymore")
138+ else if ((searchForUser == "no User exists"))
139+ then throw("User does not exist")
140+ else {
141+ let searchForCounter = match getInteger((itemId + "_counter")) {
142+ case s: Int =>
143+ s
144+ case _ =>
145+ -1
146+ }
147+ if ((searchForCounter >= 1))
148+ then {
149+ let adressList = findPredictionAdresses(itemId, searchForCounter)
150+ if (containsElement(adressList, clientAdress))
151+ then throw("This User already gave a Prediction")
152+ else {
153+ let predictionCounter = match getInteger((itemId + "_predictionCounter")) {
154+ case s: Int =>
155+ s
156+ case _ =>
157+ -1
158+ }
159+ let lastPredictionAdress = adressList[(size(adressList) - 1)]
160+ let lastPrediction = match getString(((itemId + "_") + lastPredictionAdress)) {
161+ case s: String =>
162+ s
163+ case _ =>
164+ "no Prediction Found"
165+ }
166+ let newCounter = (searchForCounter + 1)
167+ if ((lastPrediction == prediction))
168+ then if (((predictionCounter + 1) == predictionMaxCounter))
169+ then {
170+ let invokeAdjustRating = invoke(this, "adjustRatingsAndPayoutParticipants", [itemId, adressList, clientAdress, prediction], nil)
171+ if ((invokeAdjustRating != invokeAdjustRating))
172+ then throw("Strict value is not equal to itself.")
173+ else [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter + 1)), BooleanEntry((itemId + "_final"), true), BooleanEntry((itemId + "_cancelled"), false), ScriptTransfer(Address(fromBase58String(clientAdress)), payoutAmount, tokenId), IntegerEntry(clientAdress, (clientRating + 20))]
174+ }
175+ else [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter + 1)), BooleanEntry((itemId + "_final"), false), BooleanEntry((itemId + "_cancelled"), false)]
176+ else if ((newCounter >= maxCounter))
177+ then [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter - 1)), BooleanEntry((itemId + "_cancelled"), true), BooleanEntry((itemId + "_final"), false)]
178+ else if (((predictionCounter - 1) == -1))
179+ then [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), 1), BooleanEntry((itemId + "_cancelled"), false), BooleanEntry((itemId + "_final"), false), StringEntry("test", lastPrediction), IntegerEntry("test2", size(adressList))]
180+ else [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter - 1)), BooleanEntry((itemId + "_cancelled"), false), BooleanEntry((itemId + "_final"), false), StringEntry("test", lastPrediction), IntegerEntry("test2", size(adressList))]
181+ }
182+ }
183+ else {
184+ let searchForNewItem = match getString(("new_" + itemId)) {
185+ case s: String =>
186+ s
187+ case _ =>
188+ "not Found"
189+ }
190+ if ((searchForNewItem != itemId))
191+ then throw("Item not Found")
192+ else [StringEntry(((itemId + "_") + toString(1)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), 1), IntegerEntry((itemId + "_predictionCounter"), 1), DeleteEntry(("new_" + itemId)), StringEntry(("updated_" + itemId), itemId)]
193+ }
194+ }
184195 }
185196
186197
187198
188199 @Callable(i)
189200 func registerUser () = {
190201 let clientAdress = toString(i.caller)
191202 let searchForUser = match getInteger(clientAdress) {
192203 case s: Int =>
193204 s
194205 case _ =>
195206 -1
196207 }
197208 if ((searchForUser != -1))
198209 then throw("User already exists")
199210 else [IntegerEntry(clientAdress, defaultRating)]
200211 }
201212
202213
203214 @Verifier(tx)
204215 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
205216

github/deemru/w8io/026f985 
46.21 ms