tx · BxBhUpX6MWk8mG8PzJh79gzuHYgpVyYbrAuQbsAPZ3Xb

3N8YkRZsgDVNAxtmwU1F65EpcYMb8f7QPos:  -0.01400000 Waves

2024.05.28 10:30 [3125532] smart account 3N8YkRZsgDVNAxtmwU1F65EpcYMb8f7QPos > SELF 0.00000000 Waves

{ "type": 13, "id": "BxBhUpX6MWk8mG8PzJh79gzuHYgpVyYbrAuQbsAPZ3Xb", "fee": 1400000, "feeAssetId": null, "timestamp": 1716881355052, "version": 2, "chainId": 84, "sender": "3N8YkRZsgDVNAxtmwU1F65EpcYMb8f7QPos", "senderPublicKey": "F7SLwr7RYVQpyocmVScFC6ooaAwewaGq6wNRDYvyiPj1", "proofs": [ "5Tbk5YVHGGPaMmmJQwdxvNFwQGKQWcY4Ezr5AePwMTPN4AmeTer6XiHFQD9Wg2n1QDFt8fipDsMzfGDMFkBVCKj5" ], "script": "base64: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YWRyZXNzMgUAAAAHYWRyZXNzMwMJAABnAAAAAgUAAAAHY291bnRlcgAAAAAAAAAAAgQAAAAHYWRyZXNzMQkBAAAAEXNlYXJjaEZvckNvdW50ZXJzAAAAAgUAAAAGaXRlbUlkAAAAAAAAAAABBAAAAAdhZHJlc3MyCQEAAAARc2VhcmNoRm9yQ291bnRlcnMAAAACBQAAAAZpdGVtSWQAAAAAAAAAAAIJAARNAAAAAgkABE0AAAACBQAAAANuaWwFAAAAB2FkcmVzczEFAAAAB2FkcmVzczIEAAAAB2FkcmVzczEJAQAAABFzZWFyY2hGb3JDb3VudGVycwAAAAIFAAAABml0ZW1JZAAAAAAAAAAAAQkABE0AAAACBQAAAANuaWwFAAAAB2FkcmVzczEFAAAACmFkcmVzc0xpc3QAAAADAAAAAWkBAAAAImFkanVzdFJhdGluZ3NBbmRQYXlvdXRQYXJ0aWNpcGFudHMAAAAEAAAABml0ZW1JZAAAAAthZGRyZXNzTGlzdAAAABFsYXN0Q2FsbGVyQWRkcmVzcwAAAA9maW5hbFByZWRpY3Rpb24KAQAAABF1cGRhdGVSYXRpbmdzRnVuYwAAAAIAAAAFYWNjdW0AAAAHYWRkcmVzcwQAAAAGcmF0aW5nBAAAAAckbWF0Y2gwCQAEHwAAAAEFAAAAB2FkZHJlc3MDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABcgUAAAAHJG1hdGNoMAUAAAABcgUAAAANZGVmYXVsdFJhdGluZwQAAAAKcHJlZGljdGlvbgkBAAAAGnNlYXJjaEZvckFkZHJlc3NQcmVkaWN0aW9uAAAAAgUAAAAGaXRlbUlkBQAAAAdhZGRyZXNzBAAAAA11cGRhdGVkUmF0aW5nAwkAAAAAAAACBQAAAApwcmVkaWN0aW9uBQAAAA9maW5hbFByZWRpY3Rpb24JAABkAAAAAgUAAAAGcmF0aW5nBQAAAA5yYXRlQWRqdXN0bWVudAkAAGUAAAACBQAAAAZyYXRpbmcFAAAADnJhdGVBZGp1c3RtZW50BAAAAAZwYXlvdXQDCQAAAAAAAAIFAAAACnByZWRpY3Rpb24FAAAAD2ZpbmFsUHJlZGljdGlvbgUAAAAMcGF5b3V0QW1vdW50AAAAAAAAAAAABAAAAA51cGRhdGVk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", "height": 3125532, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8WhTxB3VmD9ySCYVWnnA6BFoHKj9nLDszaE83pxFGjy5 Next: AuWQBNTbpHNsfeXZ7JdsNzTq2TmW9ZgJqbocuevNvLpc Diff:
OldNewDifferences
88 let defaultRating = 100
99
1010 let rateAdjustment = 20
11+
12+let tokenId = base58'8QGJvsXqJ43q5ksFymoPKF1NWWhwUfr2F7h52oeWgVhH'
13+
14+let payoutAmount = 100000000
1115
1216 func searchForCounters (itemId,counter) = {
1317 let searchForCounters = match getString(((itemId + "_") + toString(counter))) {
2024 }
2125
2226
23-func searchForAdressPrediction (itemId,adress) = {
27+func searchForAddressPrediction (itemId,adress) = {
2428 let searchForPrediction = match getString(((itemId + "_") + adress)) {
2529 case s: String =>
2630 s
3236
3337
3438 func findPredictionAdresses (itemId,counter) = {
35- let adressList = nil
36- if ((counter >= 5))
39+ let adressList = if ((counter >= 5))
3740 then {
3841 let adress1 = searchForCounters(itemId, 1)
3942 let adress2 = searchForCounters(itemId, 2)
4043 let adress3 = searchForCounters(itemId, 3)
4144 let adress4 = searchForCounters(itemId, 4)
4245 let adress5 = searchForCounters(itemId, 5)
43- (((((adressList :+ adress1) :+ adress2) :+ adress3) :+ adress4) :+ adress5)
46+ (((((nil :+ adress1) :+ adress2) :+ adress3) :+ adress4) :+ adress5)
4447 }
4548 else if ((counter >= 4))
4649 then {
4851 let adress2 = searchForCounters(itemId, 2)
4952 let adress3 = searchForCounters(itemId, 3)
5053 let adress4 = searchForCounters(itemId, 4)
51- ((((adressList :+ adress1) :+ adress2) :+ adress3) :+ adress4)
54+ ((((nil :+ adress1) :+ adress2) :+ adress3) :+ adress4)
5255 }
5356 else if ((counter >= 3))
5457 then {
5558 let adress1 = searchForCounters(itemId, 1)
5659 let adress2 = searchForCounters(itemId, 2)
5760 let adress3 = searchForCounters(itemId, 3)
58- (((adressList :+ adress1) :+ adress2) :+ adress3)
61+ (((nil :+ adress1) :+ adress2) :+ adress3)
5962 }
6063 else if ((counter >= 2))
6164 then {
6265 let adress1 = searchForCounters(itemId, 1)
6366 let adress2 = searchForCounters(itemId, 2)
64- ((adressList :+ adress1) :+ adress2)
67+ ((nil :+ adress1) :+ adress2)
6568 }
6669 else {
6770 let adress1 = searchForCounters(itemId, 1)
68- (adressList :+ adress1)
71+ (nil :+ adress1)
6972 }
73+ adressList
7074 }
7175
7276
7377 @Callable(i)
74-func adjustRatingsAndPayoutParticipants (itemId,adressList,lastCallerAdress,finalPrediction) = [StringEntry("Test123123", "final")]
78+func adjustRatingsAndPayoutParticipants (itemId,addressList,lastCallerAddress,finalPrediction) = {
79+ func updateRatingsFunc (accum,address) = {
80+ let rating = match getInteger(address) {
81+ case r: Int =>
82+ r
83+ case _ =>
84+ defaultRating
85+ }
86+ let prediction = searchForAddressPrediction(itemId, address)
87+ let updatedRating = if ((prediction == finalPrediction))
88+ then (rating + rateAdjustment)
89+ else (rating - rateAdjustment)
90+ let payout = if ((prediction == finalPrediction))
91+ then payoutAmount
92+ else 0
93+ let updatedEntries = (accum :+ IntegerEntry(address, updatedRating))
94+ if ((payout > 0))
95+ then (updatedEntries :+ ScriptTransfer(Address(fromBase58String(address)), payout, tokenId))
96+ else updatedEntries
97+ }
98+
99+ let updatedRatings = {
100+ let $l = addressList
101+ let $s = size($l)
102+ let $acc0 = nil
103+ func $f0_1 ($a,$i) = if (($i >= $s))
104+ then $a
105+ else updateRatingsFunc($a, $l[$i])
106+
107+ func $f0_2 ($a,$i) = if (($i >= $s))
108+ then $a
109+ else throw("List size exceeds 5")
110+
111+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
112+ }
113+ (updatedRatings :+ BooleanEntry((itemId + "_adjusted"), true))
114+ }
75115
76116
77117
156196 }
157197 if ((searchForUser != -1))
158198 then throw("User already exists")
159- else [IntegerEntry(clientAdress, defaultRating), IntegerEntry("Test123", searchForUser)]
199+ else [IntegerEntry(clientAdress, defaultRating)]
160200 }
161201
162202
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
11+
12+let tokenId = base58'8QGJvsXqJ43q5ksFymoPKF1NWWhwUfr2F7h52oeWgVhH'
13+
14+let payoutAmount = 100000000
1115
1216 func searchForCounters (itemId,counter) = {
1317 let searchForCounters = match getString(((itemId + "_") + toString(counter))) {
1418 case s: String =>
1519 s
1620 case _ =>
1721 "No User"
1822 }
1923 searchForCounters
2024 }
2125
2226
23-func searchForAdressPrediction (itemId,adress) = {
27+func searchForAddressPrediction (itemId,adress) = {
2428 let searchForPrediction = match getString(((itemId + "_") + adress)) {
2529 case s: String =>
2630 s
2731 case _ =>
2832 "Not Found"
2933 }
3034 searchForPrediction
3135 }
3236
3337
3438 func findPredictionAdresses (itemId,counter) = {
35- let adressList = nil
36- if ((counter >= 5))
39+ let adressList = if ((counter >= 5))
3740 then {
3841 let adress1 = searchForCounters(itemId, 1)
3942 let adress2 = searchForCounters(itemId, 2)
4043 let adress3 = searchForCounters(itemId, 3)
4144 let adress4 = searchForCounters(itemId, 4)
4245 let adress5 = searchForCounters(itemId, 5)
43- (((((adressList :+ adress1) :+ adress2) :+ adress3) :+ adress4) :+ adress5)
46+ (((((nil :+ adress1) :+ adress2) :+ adress3) :+ adress4) :+ adress5)
4447 }
4548 else if ((counter >= 4))
4649 then {
4750 let adress1 = searchForCounters(itemId, 1)
4851 let adress2 = searchForCounters(itemId, 2)
4952 let adress3 = searchForCounters(itemId, 3)
5053 let adress4 = searchForCounters(itemId, 4)
51- ((((adressList :+ adress1) :+ adress2) :+ adress3) :+ adress4)
54+ ((((nil :+ adress1) :+ adress2) :+ adress3) :+ adress4)
5255 }
5356 else if ((counter >= 3))
5457 then {
5558 let adress1 = searchForCounters(itemId, 1)
5659 let adress2 = searchForCounters(itemId, 2)
5760 let adress3 = searchForCounters(itemId, 3)
58- (((adressList :+ adress1) :+ adress2) :+ adress3)
61+ (((nil :+ adress1) :+ adress2) :+ adress3)
5962 }
6063 else if ((counter >= 2))
6164 then {
6265 let adress1 = searchForCounters(itemId, 1)
6366 let adress2 = searchForCounters(itemId, 2)
64- ((adressList :+ adress1) :+ adress2)
67+ ((nil :+ adress1) :+ adress2)
6568 }
6669 else {
6770 let adress1 = searchForCounters(itemId, 1)
68- (adressList :+ adress1)
71+ (nil :+ adress1)
6972 }
73+ adressList
7074 }
7175
7276
7377 @Callable(i)
74-func adjustRatingsAndPayoutParticipants (itemId,adressList,lastCallerAdress,finalPrediction) = [StringEntry("Test123123", "final")]
78+func adjustRatingsAndPayoutParticipants (itemId,addressList,lastCallerAddress,finalPrediction) = {
79+ func updateRatingsFunc (accum,address) = {
80+ let rating = match getInteger(address) {
81+ case r: Int =>
82+ r
83+ case _ =>
84+ defaultRating
85+ }
86+ let prediction = searchForAddressPrediction(itemId, address)
87+ let updatedRating = if ((prediction == finalPrediction))
88+ then (rating + rateAdjustment)
89+ else (rating - rateAdjustment)
90+ let payout = if ((prediction == finalPrediction))
91+ then payoutAmount
92+ else 0
93+ let updatedEntries = (accum :+ IntegerEntry(address, updatedRating))
94+ if ((payout > 0))
95+ then (updatedEntries :+ ScriptTransfer(Address(fromBase58String(address)), payout, tokenId))
96+ else updatedEntries
97+ }
98+
99+ let updatedRatings = {
100+ let $l = addressList
101+ let $s = size($l)
102+ let $acc0 = nil
103+ func $f0_1 ($a,$i) = if (($i >= $s))
104+ then $a
105+ else updateRatingsFunc($a, $l[$i])
106+
107+ func $f0_2 ($a,$i) = if (($i >= $s))
108+ then $a
109+ else throw("List size exceeds 5")
110+
111+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
112+ }
113+ (updatedRatings :+ BooleanEntry((itemId + "_adjusted"), true))
114+ }
75115
76116
77117
78118 @Callable(i)
79119 func savePrediction (itemId,prediction) = {
80120 let clientAdress = toString(i.caller)
81121 let searchForUser = match getInteger(clientAdress) {
82122 case s: Int =>
83123 s
84124 case _ =>
85125 "no User exists"
86126 }
87127 if ((searchForUser == "no User exists"))
88128 then throw("User does not exist")
89129 else {
90130 let searchForCounter = match getInteger((itemId + "_counter")) {
91131 case s: Int =>
92132 s
93133 case _ =>
94134 -1
95135 }
96136 if ((searchForCounter >= 1))
97137 then {
98138 let adressList = findPredictionAdresses(itemId, searchForCounter)
99139 if (containsElement(adressList, clientAdress))
100140 then throw("This User already gave a Prediction")
101141 else {
102142 let predictionCounter = match getInteger((itemId + "_predictionCounter")) {
103143 case s: Int =>
104144 s
105145 case _ =>
106146 -1
107147 }
108148 let lastPredictionAdress = adressList[(size(adressList) - 1)]
109149 let lastPrediction = match getString(((itemId + "_") + lastPredictionAdress)) {
110150 case s: String =>
111151 s
112152 case _ =>
113153 "no Prediction Found"
114154 }
115155 let newCounter = (searchForCounter + 1)
116156 if ((lastPrediction == prediction))
117157 then if (((predictionCounter + 1) == predictionMaxCounter))
118158 then {
119159 let invokeAdjustRating = invoke(this, "adjustRatingsAndPayoutParticipants", [itemId, adressList, clientAdress, prediction], nil)
120160 if ((invokeAdjustRating != invokeAdjustRating))
121161 then throw("Strict value is not equal to itself.")
122162 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)]
123163 }
124164 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)]
125165 else if ((newCounter >= maxCounter))
126166 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)]
127167 else if (((predictionCounter - 1) == -1))
128168 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))]
129169 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))]
130170 }
131171 }
132172 else {
133173 let searchForNewItem = match getString(("new_" + itemId)) {
134174 case s: String =>
135175 s
136176 case _ =>
137177 "not Found"
138178 }
139179 if ((searchForNewItem != itemId))
140180 then throw("Item not Found")
141181 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)]
142182 }
143183 }
144184 }
145185
146186
147187
148188 @Callable(i)
149189 func registerUser () = {
150190 let clientAdress = toString(i.caller)
151191 let searchForUser = match getInteger(clientAdress) {
152192 case s: Int =>
153193 s
154194 case _ =>
155195 -1
156196 }
157197 if ((searchForUser != -1))
158198 then throw("User already exists")
159- else [IntegerEntry(clientAdress, defaultRating), IntegerEntry("Test123", searchForUser)]
199+ else [IntegerEntry(clientAdress, defaultRating)]
160200 }
161201
162202
163203 @Verifier(tx)
164204 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
165205

github/deemru/w8io/c3f4982 
123.11 ms