tx · 8LwYmadHf1qnAp13r1sZd9mAicGszf7taCxVmhufbQZ 3MpwcwacJAfY3Wt5no8Vayek5Y2wLHCoqKa: -0.01400000 Waves 2021.02.21 01:53 [1407061] smart account 3MpwcwacJAfY3Wt5no8Vayek5Y2wLHCoqKa > SELF 0.00000000 Waves
{ "type": 13, "id": "8LwYmadHf1qnAp13r1sZd9mAicGszf7taCxVmhufbQZ", "fee": 1400000, "feeAssetId": null, "timestamp": 1613861637438, "version": 2, "chainId": 84, "sender": "3MpwcwacJAfY3Wt5no8Vayek5Y2wLHCoqKa", "senderPublicKey": "22LwkZvhBgiz8QycnmX7skuLXNvp4gKCEBD4r474vKgp", "proofs": [ "2XGskZn1YBCQp1yrA4Fbm7AqeMQc9VSjakh8xSx8DzHTEPGw1nELtJEboohhjun8QudADPjthw1YUnX94TCqB69K" ], "script": "base64:AAIDAAAAAAAAAAgIARIAEgASAAAAACoAAAAADWdhbWVQdWJsaWNLZXkJAAJZAAAAAQIAAAAsMjJMd2tadmhCZ2l6OFF5Y25tWDdza3VMWE52cDRnS0NFQkQ0cjQ3NHZLZ3AAAAAAC2dhbWVBZGRyZXNzCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAA1nYW1lUHVibGljS2V5AAAAAA5hZG1pblB1YmxpY0tleQEAAAAgo48gw3sh+zm7Ti9Qukc32bYx6mSAxesLg4xaN7sn3DIAAAAADGFkbWluQWRkcmVzcwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAAOYWRtaW5QdWJsaWNLZXkAAAAABWRydW0xCQAETAAAAAICAAAAATYJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATQJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATcJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0BQAAAANuaWwAAAAABWRydW0yCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATQJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATYJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATQJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAE3CQAETAAAAAICAAAAATUJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEzBQAAAANuaWwAAAAABWRydW0zCQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABNwkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE2CQAETAAAAAICAAAAATQJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABNQkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABNwkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAExBQAAAANuaWwAAAAACHN0YXRlQWNjAgAAAAhBQ0NFUFRFRAAAAAAJYmV0UGxhY2VkAgAAAAdQRU5ESU5HAAAAAAZiZXRXaW4CAAAAA1dPTgAAAAAHYmV0TG9zZQIAAAAETE9TVAAAAAANZ2FtZVRpbWVGcmFtZQAAAAAAAAAAAwAAAAAHd2F2ZXNJZAUAAAAEdW5pdAAAAAALd2F2ZXNNaW5BbXQAAAAAAAExLQAAAAAAC3dhdmVzTWF4QW10CQAAaAAAAAIFAAAAC3dhdmVzTWluQW10AAAAAAAAAAAKAAAAABBnYW1lTGFiZWxDb3VudGVyAgAAAAxHQU1FU0NPVU5URVIBAAAADmdhbWVHZXRDb3VudGVyAAAAAAkABBoAAAACBQAAAAR0aGlzBQAAABBnYW1lTGFiZWxDb3VudGVyAAAAAAlnYW1lTGFiZWwJAAEsAAAAAgkABCUAAAABBQAAAAtnYW1lQWRkcmVzcwIAAAANX0dBTUVfQUREUkVTUwEAAAAHZ2FtZUdldAAAAAAJAAQdAAAAAgUAAAAEdGhpcwUAAAAJZ2FtZUxhYmVsAAAAAA9nYW1lTGFiZWxTdGF0dXMJAAEsAAAAAgkAASwAAAACAgAAAAJHXwkABCUAAAABBQAAAAtnYW1lQWRkcmVzcwIAAAAHX1NUQVRVUwEAAAANZ2FtZUdldFN0YXR1cwAAAAAJAAQdAAAAAgUAAAAEdGhpcwUAAAAPZ2FtZUxhYmVsU3RhdHVzAAAAAAxnYW1lTGFiZWxSb3cJAAEsAAAAAgkAASwAAAACAgAAAAJSXwkABCUAAAABBQAAAAtnYW1lQWRkcmVzcwIAAAANX1JPV19XSU4vTE9TRQEAAAAKZ2FtZUdldFJvdwAAAAAJAAQdAAAAAgUAAAAEdGhpcwUAAAAMZ2FtZUxhYmVsUm93AQAAABJnYW1lTGFiZWxCZXRTdGF0dXMAAAABAAAACnBsYXllckFkZHIJAAEsAAAAAgUAAAAKcGxheWVyQWRkcgIAAAALX0JFVF9TVEFUVVMBAAAAEGdhbWVHZXRCZXRTdGF0dXMAAAABAAAACnBsYXllckFkZHIJAAQdAAAAAgUAAAAEdGhpcwkBAAAAEmdhbWVMYWJlbEJldFN0YXR1cwAAAAEFAAAACnBsYXllckFkZHIBAAAADGdhbWVMYWJlbEJldAAAAAEAAAAKcGxheWVyQWRkcgkAASwAAAACBQAAAApwbGF5ZXJBZGRyAgAAAAhfQkVUREFUQQEAAAAKZ2FtZUdldEJldAAAAAEAAAAKcGxheWVyQWRkcgkABB0AAAACBQAAAAR0aGlzCQEAAAAMZ2FtZUxhYmVsQmV0AAAAAQUAAAAKcGxheWVyQWRkcgEAAAASYWRkcmVzc0xhYmVsQW1vdW50AAAAAQAAAARhZGRyCQABLAAAAAIJAAEsAAAAAgIAAAACQl8FAAAABGFkZHIC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", "height": 1407061, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4RzTa596gDygcWA22X4FUNrqHgWAh5WtD3NftLHMHWmB Next: 3mZCs5TiRL9zwhLnYgTnS1bWb3Y1PMYzk37B5EFutyJB Diff:
Old | New | Differences | |
---|---|---|---|
156 | 156 | ||
157 | 157 | ||
158 | 158 | func X (Y) = { | |
159 | - | let Z = | |
159 | + | let Z = (((Y.transactionId + Y.callerPublicKey) + toBytes(lastBlock.height)) + toBytes(lastBlock.timestamp)) | |
160 | 160 | (toInt(sha256(Z)) % 29) | |
161 | 161 | } | |
162 | 162 | ||
163 | 163 | ||
164 | - | @Callable(aa) | |
165 | - | func initSlotGame () = if ((aa.callerPublicKey != c)) | |
164 | + | func aa (Y) = { | |
165 | + | let Z = (((Y.transactionId + lastBlock.generationSignature) + toBytes(lastBlock.height)) + toBytes(lastBlock.timestamp)) | |
166 | + | (toInt(sha256(Z)) % 29) | |
167 | + | } | |
168 | + | ||
169 | + | ||
170 | + | func ab (Y) = { | |
171 | + | let Z = (((Y.transactionId + Y.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) | |
172 | + | (toInt(sha256(Z)) % 29) | |
173 | + | } | |
174 | + | ||
175 | + | ||
176 | + | @Callable(ac) | |
177 | + | func initSlotGame () = if ((ac.callerPublicKey != c)) | |
166 | 178 | then throw("initGame_FORBBIDEN") | |
167 | 179 | else { | |
168 | 180 | let M = q() | |
169 | 181 | if ($isInstanceOf(M, "Int")) | |
170 | 182 | then { | |
171 | - | let | |
183 | + | let ad = M | |
172 | 184 | throw("INIT_ALREADY_DONE") | |
173 | 185 | } | |
174 | 186 | else WriteSet([DataEntry(p, 0), DataEntry(t, "ACTIVE"), DataEntry(r, ((h + "_WAVES_") + toString(height))), DataEntry(v, ("0_" + toString(b)))]) | |
176 | 188 | ||
177 | 189 | ||
178 | 190 | ||
179 | - | @Callable( | |
191 | + | @Callable(ac) | |
180 | 192 | func placeBet () = { | |
181 | - | let | |
182 | - | let | |
183 | - | let S = | |
184 | - | let | |
193 | + | let ae = extract(ac.caller) | |
194 | + | let af = extract(ac.payment) | |
195 | + | let S = af.amount | |
196 | + | let ag = R(S) | |
185 | 197 | let M = u() | |
186 | 198 | if ($isInstanceOf(M, "String")) | |
187 | 199 | then { | |
188 | - | let | |
189 | - | if (( | |
200 | + | let ah = M | |
201 | + | if ((ah != "ACTIVE")) | |
190 | 202 | then throw("SLOT_GAME_NOT_INITIALIZED") | |
191 | 203 | else { | |
192 | - | let | |
193 | - | if ($isInstanceOf( | |
204 | + | let ai = q() | |
205 | + | if ($isInstanceOf(ai, "Int")) | |
194 | 206 | then { | |
195 | - | let | |
196 | - | if (!( | |
207 | + | let ad = ai | |
208 | + | if (!(ag)) | |
197 | 209 | then throw("PLACEBET:_WRONG_BET_AMOUNT") | |
198 | 210 | else { | |
199 | - | let | |
200 | - | let | |
201 | - | if ($isInstanceOf( | |
211 | + | let aj = (ad + 1) | |
212 | + | let ak = G(toString(ae)) | |
213 | + | if ($isInstanceOf(ak, "Int")) | |
202 | 214 | then { | |
203 | - | let | |
204 | - | if (( | |
215 | + | let al = ak | |
216 | + | if ((al >= 0)) | |
205 | 217 | then { | |
206 | - | let | |
207 | - | if ($isInstanceOf( | |
218 | + | let am = z(toString(ae)) | |
219 | + | if ($isInstanceOf(am, "String")) | |
208 | 220 | then { | |
209 | - | let | |
210 | - | if (( | |
221 | + | let an = am | |
222 | + | if ((an != "PLAYED")) | |
211 | 223 | then throw("COMPLETE_ PREVIOUS_GAME_1") | |
212 | - | else WriteSet([DataEntry(p, | |
224 | + | else WriteSet([DataEntry(p, aj), DataEntry(r, ((h + "_WAVES_") + toString(height))), DataEntry(x(toString(ae)), "BET"), DataEntry(C(toString(ae)), S), DataEntry(A(toString(ae)), (((((((i + "_") + toString(ae)) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_0_0_0_0_0"))]) | |
213 | 225 | } | |
214 | - | else WriteSet([DataEntry(p, | |
226 | + | else WriteSet([DataEntry(p, aj), DataEntry(r, ((h + "_WAVES_") + toString(height))), DataEntry(x(toString(ae)), "BET"), DataEntry(C(toString(ae)), S), DataEntry(A(toString(ae)), (((((((i + "_") + toString(ae)) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_0_0_0_0_0"))]) | |
215 | 227 | } | |
216 | 228 | else throw("BAD_WIN_INIT") | |
217 | 229 | } | |
218 | 230 | else { | |
219 | - | let | |
220 | - | if ($isInstanceOf( | |
231 | + | let am = z(toString(ae)) | |
232 | + | if ($isInstanceOf(am, "String")) | |
221 | 233 | then { | |
222 | - | let | |
223 | - | if (( | |
234 | + | let an = am | |
235 | + | if ((an != "PLAYED")) | |
224 | 236 | then throw("COMPLETE_ PREVIOUS_GAME_2") | |
225 | - | else WriteSet([DataEntry(p, | |
237 | + | else WriteSet([DataEntry(p, aj), DataEntry(r, ((h + "_WAVES_") + toString(height))), DataEntry(x(toString(ae)), "BET"), DataEntry(C(toString(ae)), S), DataEntry(A(toString(ae)), (((((((i + "_") + toString(ae)) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_0_0_0_0_0")), DataEntry(F(toString(ae)), 0), DataEntry(H(toString(ae)), 0)]) | |
226 | 238 | } | |
227 | - | else WriteSet([DataEntry(p, | |
239 | + | else WriteSet([DataEntry(p, aj), DataEntry(r, ((h + "_WAVES_") + toString(height))), DataEntry(x(toString(ae)), "BET"), DataEntry(C(toString(ae)), S), DataEntry(A(toString(ae)), (((((((i + "_") + toString(ae)) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_0_0_0_0_0")), DataEntry(F(toString(ae)), 0), DataEntry(H(toString(ae)), 0)]) | |
228 | 240 | } | |
229 | 241 | } | |
230 | 242 | } | |
236 | 248 | ||
237 | 249 | ||
238 | 250 | ||
239 | - | @Callable( | |
251 | + | @Callable(ac) | |
240 | 252 | func playGame () = { | |
241 | - | let | |
242 | - | let | |
243 | - | let | |
244 | - | let | |
245 | - | let | |
246 | - | let y = | |
247 | - | let S = parseIntValue( | |
248 | - | let | |
249 | - | let | |
250 | - | let | |
251 | - | let W = ((e[ | |
252 | - | let | |
253 | - | let | |
253 | + | let ao = N() | |
254 | + | let ap = parseIntValue(ao[0]) | |
255 | + | let aq = ao[1] | |
256 | + | let ar = P(toString(ac.caller)) | |
257 | + | let an = ar[0] | |
258 | + | let y = ar[1] | |
259 | + | let S = parseIntValue(ar[2]) | |
260 | + | let as = X(ac) | |
261 | + | let at = aa(ac) | |
262 | + | let au = ab(ac) | |
263 | + | let W = ((e[as] + f[at]) + g[au]) | |
264 | + | let av = ((T(as) + T(as)) + T(as)) | |
265 | + | let aw = ((V(W) * wavesBalance(this)) / 100) | |
254 | 266 | let M = u() | |
255 | 267 | if ($isInstanceOf(M, "String")) | |
256 | 268 | then { | |
257 | - | let | |
258 | - | if (( | |
269 | + | let ah = M | |
270 | + | if ((ah != "ACTIVE")) | |
259 | 271 | then throw("SLOT_GAME_NOT_ACTIVE") | |
260 | 272 | else { | |
261 | - | let | |
262 | - | if ($isInstanceOf( | |
273 | + | let ai = z(y) | |
274 | + | if ($isInstanceOf(ai, "String")) | |
263 | 275 | then { | |
264 | - | let | |
265 | - | if (( | |
276 | + | let ax = ai | |
277 | + | if ((ax != "BET")) | |
266 | 278 | then throw("PLACE_BET_BEFORE_YOU_PLAY") | |
267 | - | else if (( | |
279 | + | else if ((ac.caller != addressFromStringValue(y))) | |
268 | 280 | then throw("NOT_CURRENT_PLAYER") | |
269 | - | else if (( | |
281 | + | else if ((aw != 0)) | |
270 | 282 | then { | |
271 | - | let | |
272 | - | if ($isInstanceOf( | |
283 | + | let ak = G(y) | |
284 | + | if ($isInstanceOf(ak, "Int")) | |
273 | 285 | then { | |
274 | - | let | |
275 | - | let | |
286 | + | let al = ak | |
287 | + | let ay = (al + 1) | |
276 | 288 | if ((W == "444")) | |
277 | - | then ScriptResult(WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString( | |
278 | - | else if (( | |
279 | - | then ScriptResult(WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString( | |
280 | - | else if (if ((y == | |
281 | - | then ( | |
289 | + | then ScriptResult(WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString(ac.caller)), ((((((((((((((("TRIPLE_BAR_" + y) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_") + toString(ay)) + "_") + ar[6]) + "_") + ar[7]) + "_") + W) + "_") + av)), DataEntry(F(toString(ac.caller)), ay), DataEntry(v, ((toString(0) + "_") + y))]), TransferSet([ScriptTransfer(addressFromStringValue(y), aw, unit)])) | |
290 | + | else if ((al >= 200)) | |
291 | + | then ScriptResult(WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString(ac.caller)), ((((((((((((((((j + "_") + y) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_") + toString(0)) + "_") + ar[6]) + "_") + ar[7]) + "_") + W) + "_") + av)), DataEntry(F(toString(ac.caller)), 0), DataEntry(v, ((toString(0) + "_") + y))]), TransferSet([ScriptTransfer(addressFromStringValue(y), aw, unit)])) | |
292 | + | else if (if ((y == aq)) | |
293 | + | then (ap == 5) | |
282 | 294 | else false) | |
283 | - | then ScriptResult(WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString( | |
284 | - | else ScriptResult(WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(y), ((((((((((((((((((j + "_") + y) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_") + toString( | |
295 | + | then ScriptResult(WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString(ac.caller)), ((((((((((((((((j + "_") + y) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_") + toString(ay)) + "_") + toString(0)) + "_") + ar[7]) + "_") + W) + "_") + av)), DataEntry(F(toString(ac.caller)), ay), DataEntry(v, ((toString(0) + "_") + y))]), TransferSet([ScriptTransfer(addressFromStringValue(y), aw, unit)])) | |
296 | + | else ScriptResult(WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(y), ((((((((((((((((((j + "_") + y) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_") + toString(ay)) + "_") + toString(ay)) + "_") + ar[7]) + "_") + W) + "_") + av) + "_") + toString(aw))), DataEntry(F(toString(ac.caller)), ay), DataEntry(v, ((toString(ay) + "_") + y))]), TransferSet([ScriptTransfer(addressFromStringValue(y), aw, unit)])) | |
285 | 297 | } | |
286 | 298 | else throw("INIT_WIN:addressGetWins") | |
287 | 299 | } | |
288 | 300 | else { | |
289 | - | let | |
290 | - | if ($isInstanceOf( | |
301 | + | let ak = I(y) | |
302 | + | if ($isInstanceOf(ak, "Int")) | |
291 | 303 | then { | |
292 | - | let | |
293 | - | let | |
294 | - | if (( | |
295 | - | then WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString( | |
296 | - | else WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString( | |
304 | + | let az = ak | |
305 | + | let aA = (az + 1) | |
306 | + | if ((az >= 5)) | |
307 | + | then WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString(ac.caller)), ((((((((((((((av + "_") + y) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_") + ar[5]) + "_") + ar[6]) + "_0_") + W) + "_") + av)), DataEntry(H(toString(ac.caller)), 0), DataEntry(v, ((toString(0) + "_") + y))]) | |
308 | + | else WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString(ac.caller)), ((((((((((((((((av + "_") + y) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_") + ar[5]) + "_") + ar[6]) + "_") + toString(aA)) + "_") + W) + "_") + av)), DataEntry(H(toString(ac.caller)), aA), DataEntry(v, ((toString(aA) + "_") + y))]) | |
297 | 309 | } | |
298 | 310 | else throw("INIT_LOSES") | |
299 | 311 | } | |
305 | 317 | } | |
306 | 318 | ||
307 | 319 | ||
308 | - | @Verifier( | |
309 | - | func | |
320 | + | @Verifier(aB) | |
321 | + | func aC () = if (sigVerify(aB.bodyBytes, aB.proofs[0], a)) | |
310 | 322 | then { | |
311 | - | let M = | |
323 | + | let M = aB | |
312 | 324 | if ($isInstanceOf(M, "SetScriptTransaction")) | |
313 | 325 | then { | |
314 | - | let | |
326 | + | let aB = M | |
315 | 327 | true | |
316 | 328 | } | |
317 | 329 | else false |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = fromBase58String("22LwkZvhBgiz8QycnmX7skuLXNvp4gKCEBD4r474vKgp") | |
5 | 5 | ||
6 | 6 | let b = addressFromPublicKey(a) | |
7 | 7 | ||
8 | 8 | let c = base58'C1U3CKj36gYHoZC119pyKKqgkUK1xigC3yQg5XrLSZsf' | |
9 | 9 | ||
10 | 10 | let d = addressFromPublicKey(c) | |
11 | 11 | ||
12 | 12 | let e = ["6", "1", "5", "4", "3", "2", "1", "3", "5", "2", "4", "1", "7", "3", "2", "3", "1", "4", "1", "3", "5", "2", "1", "4", "2", "6", "5", "2", "1", "4"] | |
13 | 13 | ||
14 | 14 | let f = ["1", "3", "4", "2", "3", "5", "1", "6", "4", "2", "1", "1", "4", "2", "1", "6", "3", "4", "1", "2", "5", "4", "1", "5", "3", "2", "7", "5", "1", "3"] | |
15 | 15 | ||
16 | 16 | let g = ["3", "2", "5", "2", "7", "4", "1", "3", "6", "4", "2", "3", "1", "6", "4", "2", "1", "5", "2", "5", "1", "3", "7", "1", "2", "6", "4", "1", "3", "1"] | |
17 | 17 | ||
18 | 18 | let h = "ACCEPTED" | |
19 | 19 | ||
20 | 20 | let i = "PENDING" | |
21 | 21 | ||
22 | 22 | let j = "WON" | |
23 | 23 | ||
24 | 24 | let k = "LOST" | |
25 | 25 | ||
26 | 26 | let l = 3 | |
27 | 27 | ||
28 | 28 | let m = unit | |
29 | 29 | ||
30 | 30 | let n = 20000000 | |
31 | 31 | ||
32 | 32 | let o = (n * 10) | |
33 | 33 | ||
34 | 34 | let p = "GAMESCOUNTER" | |
35 | 35 | ||
36 | 36 | func q () = getInteger(this, p) | |
37 | 37 | ||
38 | 38 | ||
39 | 39 | let r = (toString(b) + "_GAME_ADDRESS") | |
40 | 40 | ||
41 | 41 | func s () = getString(this, r) | |
42 | 42 | ||
43 | 43 | ||
44 | 44 | let t = (("G_" + toString(b)) + "_STATUS") | |
45 | 45 | ||
46 | 46 | func u () = getString(this, t) | |
47 | 47 | ||
48 | 48 | ||
49 | 49 | let v = (("R_" + toString(b)) + "_ROW_WIN/LOSE") | |
50 | 50 | ||
51 | 51 | func w () = getString(this, v) | |
52 | 52 | ||
53 | 53 | ||
54 | 54 | func x (y) = (y + "_BET_STATUS") | |
55 | 55 | ||
56 | 56 | ||
57 | 57 | func z (y) = getString(this, x(y)) | |
58 | 58 | ||
59 | 59 | ||
60 | 60 | func A (y) = (y + "_BETDATA") | |
61 | 61 | ||
62 | 62 | ||
63 | 63 | func B (y) = getString(this, A(y)) | |
64 | 64 | ||
65 | 65 | ||
66 | 66 | func C (D) = (("B_" + D) + "_AMOUNT") | |
67 | 67 | ||
68 | 68 | ||
69 | 69 | func E (D) = getInteger(this, C(D)) | |
70 | 70 | ||
71 | 71 | ||
72 | 72 | func F (D) = (("B_" + D) + "_WINS") | |
73 | 73 | ||
74 | 74 | ||
75 | 75 | func G (D) = getInteger(this, F(D)) | |
76 | 76 | ||
77 | 77 | ||
78 | 78 | func H (D) = (("B_" + D) + "_LOSES") | |
79 | 79 | ||
80 | 80 | ||
81 | 81 | func I (D) = getInteger(this, H(D)) | |
82 | 82 | ||
83 | 83 | ||
84 | 84 | func J () = { | |
85 | 85 | let K = s() | |
86 | 86 | let L = { | |
87 | 87 | let M = K | |
88 | 88 | if ($isInstanceOf(M, "String")) | |
89 | 89 | then { | |
90 | 90 | let L = M | |
91 | 91 | L | |
92 | 92 | } | |
93 | 93 | else throw("GAME_DATA_ERROR") | |
94 | 94 | } | |
95 | 95 | split(L, "_") | |
96 | 96 | } | |
97 | 97 | ||
98 | 98 | ||
99 | 99 | func N () = { | |
100 | 100 | let O = w() | |
101 | 101 | let L = { | |
102 | 102 | let M = O | |
103 | 103 | if ($isInstanceOf(M, "String")) | |
104 | 104 | then { | |
105 | 105 | let L = M | |
106 | 106 | L | |
107 | 107 | } | |
108 | 108 | else throw("GAME_DATA_ERROR") | |
109 | 109 | } | |
110 | 110 | split(L, "_") | |
111 | 111 | } | |
112 | 112 | ||
113 | 113 | ||
114 | 114 | func P (y) = { | |
115 | 115 | let Q = B(y) | |
116 | 116 | let L = { | |
117 | 117 | let M = Q | |
118 | 118 | if ($isInstanceOf(M, "String")) | |
119 | 119 | then { | |
120 | 120 | let L = M | |
121 | 121 | L | |
122 | 122 | } | |
123 | 123 | else throw("BET_DATA_ERROR") | |
124 | 124 | } | |
125 | 125 | split(L, "_") | |
126 | 126 | } | |
127 | 127 | ||
128 | 128 | ||
129 | 129 | func R (S) = if (if ((S >= n)) | |
130 | 130 | then (o >= S) | |
131 | 131 | else false) | |
132 | 132 | then true | |
133 | 133 | else throw("Bet amount is not in range") | |
134 | 134 | ||
135 | 135 | ||
136 | 136 | func T (U) = if ((10 > U)) | |
137 | 137 | then ("0" + toString(U)) | |
138 | 138 | else toString(U) | |
139 | 139 | ||
140 | 140 | ||
141 | 141 | func V (W) = if ((W == "777")) | |
142 | 142 | then 100 | |
143 | 143 | else if ((W == "666")) | |
144 | 144 | then 20 | |
145 | 145 | else if ((W == "555")) | |
146 | 146 | then 14 | |
147 | 147 | else if ((W == "444")) | |
148 | 148 | then 10 | |
149 | 149 | else if ((W == "333")) | |
150 | 150 | then 7 | |
151 | 151 | else if ((W == "222")) | |
152 | 152 | then 5 | |
153 | 153 | else if ((W == "111")) | |
154 | 154 | then 2 | |
155 | 155 | else 0 | |
156 | 156 | ||
157 | 157 | ||
158 | 158 | func X (Y) = { | |
159 | - | let Z = | |
159 | + | let Z = (((Y.transactionId + Y.callerPublicKey) + toBytes(lastBlock.height)) + toBytes(lastBlock.timestamp)) | |
160 | 160 | (toInt(sha256(Z)) % 29) | |
161 | 161 | } | |
162 | 162 | ||
163 | 163 | ||
164 | - | @Callable(aa) | |
165 | - | func initSlotGame () = if ((aa.callerPublicKey != c)) | |
164 | + | func aa (Y) = { | |
165 | + | let Z = (((Y.transactionId + lastBlock.generationSignature) + toBytes(lastBlock.height)) + toBytes(lastBlock.timestamp)) | |
166 | + | (toInt(sha256(Z)) % 29) | |
167 | + | } | |
168 | + | ||
169 | + | ||
170 | + | func ab (Y) = { | |
171 | + | let Z = (((Y.transactionId + Y.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) | |
172 | + | (toInt(sha256(Z)) % 29) | |
173 | + | } | |
174 | + | ||
175 | + | ||
176 | + | @Callable(ac) | |
177 | + | func initSlotGame () = if ((ac.callerPublicKey != c)) | |
166 | 178 | then throw("initGame_FORBBIDEN") | |
167 | 179 | else { | |
168 | 180 | let M = q() | |
169 | 181 | if ($isInstanceOf(M, "Int")) | |
170 | 182 | then { | |
171 | - | let | |
183 | + | let ad = M | |
172 | 184 | throw("INIT_ALREADY_DONE") | |
173 | 185 | } | |
174 | 186 | else WriteSet([DataEntry(p, 0), DataEntry(t, "ACTIVE"), DataEntry(r, ((h + "_WAVES_") + toString(height))), DataEntry(v, ("0_" + toString(b)))]) | |
175 | 187 | } | |
176 | 188 | ||
177 | 189 | ||
178 | 190 | ||
179 | - | @Callable( | |
191 | + | @Callable(ac) | |
180 | 192 | func placeBet () = { | |
181 | - | let | |
182 | - | let | |
183 | - | let S = | |
184 | - | let | |
193 | + | let ae = extract(ac.caller) | |
194 | + | let af = extract(ac.payment) | |
195 | + | let S = af.amount | |
196 | + | let ag = R(S) | |
185 | 197 | let M = u() | |
186 | 198 | if ($isInstanceOf(M, "String")) | |
187 | 199 | then { | |
188 | - | let | |
189 | - | if (( | |
200 | + | let ah = M | |
201 | + | if ((ah != "ACTIVE")) | |
190 | 202 | then throw("SLOT_GAME_NOT_INITIALIZED") | |
191 | 203 | else { | |
192 | - | let | |
193 | - | if ($isInstanceOf( | |
204 | + | let ai = q() | |
205 | + | if ($isInstanceOf(ai, "Int")) | |
194 | 206 | then { | |
195 | - | let | |
196 | - | if (!( | |
207 | + | let ad = ai | |
208 | + | if (!(ag)) | |
197 | 209 | then throw("PLACEBET:_WRONG_BET_AMOUNT") | |
198 | 210 | else { | |
199 | - | let | |
200 | - | let | |
201 | - | if ($isInstanceOf( | |
211 | + | let aj = (ad + 1) | |
212 | + | let ak = G(toString(ae)) | |
213 | + | if ($isInstanceOf(ak, "Int")) | |
202 | 214 | then { | |
203 | - | let | |
204 | - | if (( | |
215 | + | let al = ak | |
216 | + | if ((al >= 0)) | |
205 | 217 | then { | |
206 | - | let | |
207 | - | if ($isInstanceOf( | |
218 | + | let am = z(toString(ae)) | |
219 | + | if ($isInstanceOf(am, "String")) | |
208 | 220 | then { | |
209 | - | let | |
210 | - | if (( | |
221 | + | let an = am | |
222 | + | if ((an != "PLAYED")) | |
211 | 223 | then throw("COMPLETE_ PREVIOUS_GAME_1") | |
212 | - | else WriteSet([DataEntry(p, | |
224 | + | else WriteSet([DataEntry(p, aj), DataEntry(r, ((h + "_WAVES_") + toString(height))), DataEntry(x(toString(ae)), "BET"), DataEntry(C(toString(ae)), S), DataEntry(A(toString(ae)), (((((((i + "_") + toString(ae)) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_0_0_0_0_0"))]) | |
213 | 225 | } | |
214 | - | else WriteSet([DataEntry(p, | |
226 | + | else WriteSet([DataEntry(p, aj), DataEntry(r, ((h + "_WAVES_") + toString(height))), DataEntry(x(toString(ae)), "BET"), DataEntry(C(toString(ae)), S), DataEntry(A(toString(ae)), (((((((i + "_") + toString(ae)) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_0_0_0_0_0"))]) | |
215 | 227 | } | |
216 | 228 | else throw("BAD_WIN_INIT") | |
217 | 229 | } | |
218 | 230 | else { | |
219 | - | let | |
220 | - | if ($isInstanceOf( | |
231 | + | let am = z(toString(ae)) | |
232 | + | if ($isInstanceOf(am, "String")) | |
221 | 233 | then { | |
222 | - | let | |
223 | - | if (( | |
234 | + | let an = am | |
235 | + | if ((an != "PLAYED")) | |
224 | 236 | then throw("COMPLETE_ PREVIOUS_GAME_2") | |
225 | - | else WriteSet([DataEntry(p, | |
237 | + | else WriteSet([DataEntry(p, aj), DataEntry(r, ((h + "_WAVES_") + toString(height))), DataEntry(x(toString(ae)), "BET"), DataEntry(C(toString(ae)), S), DataEntry(A(toString(ae)), (((((((i + "_") + toString(ae)) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_0_0_0_0_0")), DataEntry(F(toString(ae)), 0), DataEntry(H(toString(ae)), 0)]) | |
226 | 238 | } | |
227 | - | else WriteSet([DataEntry(p, | |
239 | + | else WriteSet([DataEntry(p, aj), DataEntry(r, ((h + "_WAVES_") + toString(height))), DataEntry(x(toString(ae)), "BET"), DataEntry(C(toString(ae)), S), DataEntry(A(toString(ae)), (((((((i + "_") + toString(ae)) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_0_0_0_0_0")), DataEntry(F(toString(ae)), 0), DataEntry(H(toString(ae)), 0)]) | |
228 | 240 | } | |
229 | 241 | } | |
230 | 242 | } | |
231 | 243 | else throw("INIT_NEEDED_FOR_COUNT") | |
232 | 244 | } | |
233 | 245 | } | |
234 | 246 | else throw("INIT_ERROR") | |
235 | 247 | } | |
236 | 248 | ||
237 | 249 | ||
238 | 250 | ||
239 | - | @Callable( | |
251 | + | @Callable(ac) | |
240 | 252 | func playGame () = { | |
241 | - | let | |
242 | - | let | |
243 | - | let | |
244 | - | let | |
245 | - | let | |
246 | - | let y = | |
247 | - | let S = parseIntValue( | |
248 | - | let | |
249 | - | let | |
250 | - | let | |
251 | - | let W = ((e[ | |
252 | - | let | |
253 | - | let | |
253 | + | let ao = N() | |
254 | + | let ap = parseIntValue(ao[0]) | |
255 | + | let aq = ao[1] | |
256 | + | let ar = P(toString(ac.caller)) | |
257 | + | let an = ar[0] | |
258 | + | let y = ar[1] | |
259 | + | let S = parseIntValue(ar[2]) | |
260 | + | let as = X(ac) | |
261 | + | let at = aa(ac) | |
262 | + | let au = ab(ac) | |
263 | + | let W = ((e[as] + f[at]) + g[au]) | |
264 | + | let av = ((T(as) + T(as)) + T(as)) | |
265 | + | let aw = ((V(W) * wavesBalance(this)) / 100) | |
254 | 266 | let M = u() | |
255 | 267 | if ($isInstanceOf(M, "String")) | |
256 | 268 | then { | |
257 | - | let | |
258 | - | if (( | |
269 | + | let ah = M | |
270 | + | if ((ah != "ACTIVE")) | |
259 | 271 | then throw("SLOT_GAME_NOT_ACTIVE") | |
260 | 272 | else { | |
261 | - | let | |
262 | - | if ($isInstanceOf( | |
273 | + | let ai = z(y) | |
274 | + | if ($isInstanceOf(ai, "String")) | |
263 | 275 | then { | |
264 | - | let | |
265 | - | if (( | |
276 | + | let ax = ai | |
277 | + | if ((ax != "BET")) | |
266 | 278 | then throw("PLACE_BET_BEFORE_YOU_PLAY") | |
267 | - | else if (( | |
279 | + | else if ((ac.caller != addressFromStringValue(y))) | |
268 | 280 | then throw("NOT_CURRENT_PLAYER") | |
269 | - | else if (( | |
281 | + | else if ((aw != 0)) | |
270 | 282 | then { | |
271 | - | let | |
272 | - | if ($isInstanceOf( | |
283 | + | let ak = G(y) | |
284 | + | if ($isInstanceOf(ak, "Int")) | |
273 | 285 | then { | |
274 | - | let | |
275 | - | let | |
286 | + | let al = ak | |
287 | + | let ay = (al + 1) | |
276 | 288 | if ((W == "444")) | |
277 | - | then ScriptResult(WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString( | |
278 | - | else if (( | |
279 | - | then ScriptResult(WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString( | |
280 | - | else if (if ((y == | |
281 | - | then ( | |
289 | + | then ScriptResult(WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString(ac.caller)), ((((((((((((((("TRIPLE_BAR_" + y) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_") + toString(ay)) + "_") + ar[6]) + "_") + ar[7]) + "_") + W) + "_") + av)), DataEntry(F(toString(ac.caller)), ay), DataEntry(v, ((toString(0) + "_") + y))]), TransferSet([ScriptTransfer(addressFromStringValue(y), aw, unit)])) | |
290 | + | else if ((al >= 200)) | |
291 | + | then ScriptResult(WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString(ac.caller)), ((((((((((((((((j + "_") + y) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_") + toString(0)) + "_") + ar[6]) + "_") + ar[7]) + "_") + W) + "_") + av)), DataEntry(F(toString(ac.caller)), 0), DataEntry(v, ((toString(0) + "_") + y))]), TransferSet([ScriptTransfer(addressFromStringValue(y), aw, unit)])) | |
292 | + | else if (if ((y == aq)) | |
293 | + | then (ap == 5) | |
282 | 294 | else false) | |
283 | - | then ScriptResult(WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString( | |
284 | - | else ScriptResult(WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(y), ((((((((((((((((((j + "_") + y) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_") + toString( | |
295 | + | then ScriptResult(WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString(ac.caller)), ((((((((((((((((j + "_") + y) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_") + toString(ay)) + "_") + toString(0)) + "_") + ar[7]) + "_") + W) + "_") + av)), DataEntry(F(toString(ac.caller)), ay), DataEntry(v, ((toString(0) + "_") + y))]), TransferSet([ScriptTransfer(addressFromStringValue(y), aw, unit)])) | |
296 | + | else ScriptResult(WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(y), ((((((((((((((((((j + "_") + y) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_") + toString(ay)) + "_") + toString(ay)) + "_") + ar[7]) + "_") + W) + "_") + av) + "_") + toString(aw))), DataEntry(F(toString(ac.caller)), ay), DataEntry(v, ((toString(ay) + "_") + y))]), TransferSet([ScriptTransfer(addressFromStringValue(y), aw, unit)])) | |
285 | 297 | } | |
286 | 298 | else throw("INIT_WIN:addressGetWins") | |
287 | 299 | } | |
288 | 300 | else { | |
289 | - | let | |
290 | - | if ($isInstanceOf( | |
301 | + | let ak = I(y) | |
302 | + | if ($isInstanceOf(ak, "Int")) | |
291 | 303 | then { | |
292 | - | let | |
293 | - | let | |
294 | - | if (( | |
295 | - | then WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString( | |
296 | - | else WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString( | |
304 | + | let az = ak | |
305 | + | let aA = (az + 1) | |
306 | + | if ((az >= 5)) | |
307 | + | then WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString(ac.caller)), ((((((((((((((av + "_") + y) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_") + ar[5]) + "_") + ar[6]) + "_0_") + W) + "_") + av)), DataEntry(H(toString(ac.caller)), 0), DataEntry(v, ((toString(0) + "_") + y))]) | |
308 | + | else WriteSet([DataEntry(x(y), "PLAYED"), DataEntry(A(toString(ac.caller)), ((((((((((((((((av + "_") + y) + "_") + toString(S)) + "_WAVES_") + toString(height)) + "_") + ar[5]) + "_") + ar[6]) + "_") + toString(aA)) + "_") + W) + "_") + av)), DataEntry(H(toString(ac.caller)), aA), DataEntry(v, ((toString(aA) + "_") + y))]) | |
297 | 309 | } | |
298 | 310 | else throw("INIT_LOSES") | |
299 | 311 | } | |
300 | 312 | } | |
301 | 313 | else throw("BET_PLACED") | |
302 | 314 | } | |
303 | 315 | } | |
304 | 316 | else throw("INIT_ERROR") | |
305 | 317 | } | |
306 | 318 | ||
307 | 319 | ||
308 | - | @Verifier( | |
309 | - | func | |
320 | + | @Verifier(aB) | |
321 | + | func aC () = if (sigVerify(aB.bodyBytes, aB.proofs[0], a)) | |
310 | 322 | then { | |
311 | - | let M = | |
323 | + | let M = aB | |
312 | 324 | if ($isInstanceOf(M, "SetScriptTransaction")) | |
313 | 325 | then { | |
314 | - | let | |
326 | + | let aB = M | |
315 | 327 | true | |
316 | 328 | } | |
317 | 329 | else false | |
318 | 330 | } | |
319 | 331 | else false | |
320 | 332 |
github/deemru/w8io/026f985 156.98 ms ◑