tx · 3XETVGicwtkxJWDayiQxowokrTy7d22YGP1hcAsD5UqT

3MubWDh8QZSAZXZrcDTN77FaNqYbu2A27q7:  -0.01000000 Waves

2021.11.12 18:17 [1787958] smart account 3MubWDh8QZSAZXZrcDTN77FaNqYbu2A27q7 > SELF 0.00000000 Waves

{ "type": 13, "id": "3XETVGicwtkxJWDayiQxowokrTy7d22YGP1hcAsD5UqT", "fee": 1000000, "feeAssetId": null, "timestamp": 1636730246922, "version": 2, "chainId": 84, "sender": "3MubWDh8QZSAZXZrcDTN77FaNqYbu2A27q7", "senderPublicKey": "3ZfZgshqbuvUyvrGqGcuWsgVSkHUiZ1jMvhEdrje5sbD", "proofs": [ "2vzV3Vw9qrcDvB1sGuKhqLnx2VLPYJFG31LsPY4FiFGqpg7MSmQKZyfjCrAopQAAyWgAfXFb5xC16FbmFTLu6YpT" ], "script": "base64:AAIDAAAAAAAAADAIARIECgIBCBIDCgEBEgQKAggBEgMKAQESAwoBARIAEgASAwoBAhIDCgEBEgMKAQEAAABAAAAAAAljb3B5cmlnaHQCAAAAHkNvcHlyaWdodCAoYykgMjAyMSBNYURhTWEgTGFicwAAAAAHY3JlYXRvcgIAAAAjQGRhaWRhbG9zIC0gdHdpdHRlci5jb20vdHdfZGFpZGFsb3MAAAAABHRlYW0CAAAAKk1hRGFNYSBMYWJzIGh0dHBzOi8vZ2l0bGFiLmNvbS9tYWRhbWFsYWJzLwAAAAAHbGljZW5zZQIAAAALTUlUIExpY2Vuc2UAAAAAC2xpY2Vuc2VMaW5rAgAAAD90bGRybGVnYWwuY29tL2xpY2Vuc2UvbWl0LWxpY2Vuc2UgLCBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQAAAAAD3NlcnZlclB1YmxpY0tleQEAAAAgc3T1lNFOfyWUGtWhPrqW5k+ckdzauaTEGrUWvbzTi1cAAAAACW15QXNzZXRJZAEAAAAgjrd9IrVH54+7N/SHMAwWQQfaMQ1q2CAD0IJt548LQIcAAAAABmZlZXRtcAkBAAAABXZhbHVlAAAAAQkABBoAAAACBQAAAAR0aGlzAgAAAAVYX0ZFRQAAAAADZmVlAwkBAAAACWlzRGVmaW5lZAAAAAEFAAAABmZlZXRtcAUAAAAGZmVldG1wAAAAAAAAB6EgAAAAAAhVTklUWXRtcAkBAAAABXZhbHVlAAAAAQkABBoAAAACBQAAAAR0aGlzAgAAAAdYX1VOSVRZAAAAAAVVTklUWQMJAQAAAAlpc0RlZmluZWQAAAABBQAAAAhVTklUWXRtcAUAAAAIVU5JVFl0bXAAAAAAAAX14QAAAAAADnBlcmlvZEdhbWVQbGF5AAAAAAAAAAACAAAAAAV3aGVlbAkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAAjI0CQAETAAAAAICAAAAAjE2CQAETAAAAAICAAAAAjMzCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAACMjAJAARMAAAAAgIAAAACMTQJAARMAAAAAgIAAAACMzEJAARMAAAAAgIAAAABOQkABEwAAAACAgAAAAIyMgkABEwAAAACAgAAAAIxOAkABEwAAAACAgAAAAIyOQkABEwAAAACAgAAAAE3CQAETAAAAAICAAAAAjI4CQAETAAAAAICAAAAAjEyCQAETAAAAAICAAAAAjM1CQAETAAAAAICAAAAATMJAARMAAAAAgIAAAACMjYJAARMAAAAAgIAAAABMAkABEwAAAACAgAAAAIzMgkABEwAAAACAgAAAAIxNQkABEwAAAACAgAAAAIxOQkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAAjIxCQAETAAAAAICAAAAATIJAARMAAAAAgIAAAACMjUJAARMAAAAAgIAAAACMTcJAARMAAAAAgIAAAACMzQJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAIyNwkABEwAAAACAgAAAAIxMwkABEwAAAACAgAAAAIzNgkABEwAAAACAgAAAAIxMQkABEwAAAACAgAAAAIzMAkABEwAAAACAgAAAAE4CQAETAAAAAICAAAAAjIzCQAETAAAAAICAAAAAjEwBQAAAANuaWwAAAAACVJTQVBVQkxJQwkAAlsAAAABAgAAAZNiYXNlNjQ6TUlJQkpUQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FSSUFNSUlCRFFLQ0FRRUF0T2JmaXdXeUJGcFNOSlpta3hsd0h5NXZUK0piK1Z2NmY3TGxoS0U5d05jQzBRcDByZHlNd3hMcGR3ZnVMc0tiUmRCRWJEaHBiM2R6MUpQSmlhdGxoS1ZLVXNvUTI1VVF1OWh2Mm9YeXlFekp4ODZDR1FxNUhPcjNZR0dTZEpSMExLcTFQaGJZck5tdVM2alBEWW9ieHNzWHljL3R4c2lwU0d3ek1nVkhjcXQ5T1NpR1F5U1o4LzltdHY0MkVlZnpGRTk1d3V1eTQyS0pLRzdoMERUTWZGU0xUcHFoUy9NYnA4RUtQdVZiMWh1V3NNS1ZMOVF0T1BZRVhhOVFQWmEyV0JQWDVZOUJJMU1jUlEvV2Y4V3dxUXRBUnBCZlNWcGtLUFMxQW1odDJmRU94U1NZUnFHNklVc2ZLOHhPOWh4dCszKy9PcC8rSUZKVEdjR0Y4QnJ6V1FJR0NQdzkvdTI3AAAAABFnYW1lc0xhYmVsQ291bnRlcgIAAAAOWF9HQU1FU0NPVU5URVIAAAAAFWdhbWVzTGFiZWxCZXRzQ291bnRlcgIAAAANWF9CRVRTQ09VTlRFUgAAAAAWZ2FtZXNMYWJlbEJldHNGZWVNb3ZlZAIAAAAOWF9CRVRTRkVFTU9WRUQAAAAAGGdhbWVzTGFiZWxUb3RhbEFtb3VudFdpbgIAAAAQWF9UT1RBTEFNT1VOVFdJTgAAAAAYZ2FtZXNMYWJlbFRvdGFsQW1vdW50QmV0AgAAABBYX1RPVEFMQU1PVU5UQkVUAAAAABlnYW1lc0xhYmVsVG90YWxBZGRyZXNzQmV0AgAAABFYX1RPVEFMQUREUkVTU0JFVAEAAAAPZ2FtZXNHZXRDb3VudGVyAAAAAAkABBoAAAACBQAAAAR0aGlzBQAAABFnYW1lc0xhYmVsQ291bnRlcgEAAAATZ2FtZXNHZXRCZXRzQ291bnRlcgAAAAAJAAQaAAAAAgUAAAAEdGhpcwUAAAAVZ2FtZXNMYWJlbEJldHNDb3VudGVyAQAAABRnYW1lc0dldEJldHNGZWVNb3ZlZAAAAAAJAAQaAAAAAgUAAAAEdGhpcwUAAAAWZ2FtZXNMYWJlbEJldHNGZWVNb3ZlZAEAAAAWZ2FtZXNHZXRUb3RhbEFtb3VudFdpbgAAAAAJAAQaAAAAAgUAAAAEdGhpcwUAAAAYZ2FtZXNMYWJlbFRvdGFsQW1vdW50V2luAQAAABZnYW1lc0dldFRvdGFsQW1vdW50QmV0AAAAAAkABBoAAAACBQAAAAR0aGlzBQAAABhnYW1lc0xhYmVsVG90YWxBbW91bnRCZXQBAAAAF2dhbWVzR2V0VG90YWxBZGRyZXNzQmV0AAAAAAkABBoAAAACBQAAAAR0aGlzBQAAABlnYW1lc0xhYmVsVG90YWxBZGRyZXNzQmV0AQAAABBudW1iZXJMYWJlbENvdW50AAAAAQAAAAZudW1iZXIJAAEsAAAAAgIAAAACTl8FAAAABm51bWJlcgEAAAAObnVtYmVyR2V0Q291bnQAAAABAAAABm51bWJlcgkABBoAAAACBQAAAAR0aGlzCQEAAAAQbnVtYmVyTGFiZWxDb3VudAAAAAEFAAAABm51bWJlcgEAAAAPZ2FtZUxhYmVsU3RhdHVzAAAAAQAAAAxHQU1FU0NPVU5URVIJAAEsAAAAAgkAASwAAAACAgAAAAJHXwkAAaQAAAABBQAAAAxHQU1FU0NPVU5URVICAAAAB19TVEFUVVMBAAAAD2dhbWVMYWJlbE51bWJlcgAAAAEAAAAMR0FNRVNDT1VOVEVSCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAMR0FNRVNDT1VOVEVSAgAAAAdfTlVNQkVSAQAAAAxnYW1lTGFiZWxNYXgAAAABAAAADEdBTUVTQ09VTlRFUgkAASwAAAACCQABLAAAAAICAAAAAkdfCQABpAAAAAEFAAAADEdBTUVTQ09VTlRFUgIAAAAEX01BWAEAAAANZ2FtZUxhYmVsQmV0cwAAAAEAAAAMR0FNRVNDT1VOVEVSCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAMR0FNRVNDT1VOVEVSAgAAAAVfQkVUUwEAAAAPZ2FtZUxhYmVsUGFzc2VkAAAAAQAAAAxHQU1FU0NPVU5URVIJAAEsAAAAAgkAASwAAAACAgAAAAJHXwkAAaQAAAABBQAAAAxHQU1FU0NPVU5URVICAAAAB19QQVNTRUQBAAAAD2dhbWVMYWJlbEhlaWdodAAAAAEAAAAMR0FNRVNDT1VOVEVSCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAMR0FNRVNDT1VOVEVSAgAAAAdfSEVJR0hUAQAAAA9nYW1lTGFiZWxTdW1TaGEAAAABAAAADEdBTUVTQ09VTlRFUgkAASwAAAACCQABLAAAAAICAAAAAkdfCQABpAAAAAEFAAAADEdBTUVTQ09VTlRFUgIAAAAHX1NVTVNIQQEAAAAPZ2FtZUxhYmVsQ21iTWF4AAAAAgAAAAxHQU1FU0NPVU5URVIAAAADQ01CCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAJHXwkAAaQAAAABBQAAAAxHQU1FU0NPVU5URVICAAAAAl9DBQAAAANDTUIBAAAADWdhbWVHZXRTdGF0dXMAAAABAAAADEdBTUVTQ09VTlRFUgkABB0AAAACBQAAAAR0aGlzCQEAAAAPZ2FtZUxhYmVsU3RhdHVzAAAAAQUAAAAMR0FNRVNDT1VOVEVSAQAAAA1nYW1lR2V0TnVtYmVyAAAAAQAAAAxHQU1FU0NPVU5URVIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAD2dhbWVMYWJlbE51bWJlcgAAAAEFAAAADEdBTUVTQ09VTlRFUgEAAAAKZ2FtZUdldE1heAAAAAEAAAAMR0FNRVNDT1VOVEVSCQAEGgAAAAIFAAAABHRoaXMJAQAAAAxnYW1lTGFiZWxNYXgAAAABBQAAAAxHQU1FU0NPVU5URVIBAAAAC2dhbWVHZXRCZXRzAAAAAQAAAAxHQU1FU0NPVU5URVIJAAQaAAAAAgUAAAAEdGhpcwkBAAAADWdhbWVMYWJlbEJldHMAAAABBQAAAAxHQU1FU0NPVU5URVIBAAAADWdhbWVHZXRQYXNzZWQAAAABAAAADEdBTUVTQ09VTlRFUgkABBoAAAACBQAAAAR0aGlzCQEAAAAPZ2FtZUxhYmVsUGFzc2VkAAAAAQUAAAAMR0FNRVNDT1VOVEVSAQAAAA1nYW1lR2V0SGVpZ2h0AAAAAQAAAAxHQU1FU0NPVU5URVIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAD2dhbWVMYWJlbEhlaWdodAAAAAEFAAAADEdBTUVTQ09VTlRFUgEAAAANZ2FtZUdldFN1bVNoYQAAAAEAAAAMR0FNRVNDT1VOVEVSCQAEHQAAAAIFAAAABHRoaXMJAQAAAA9nYW1lTGFiZWxTdW1TaGEAAAABBQAAAAxHQU1FU0NPVU5URVIBAAAADWdhbWVHZXRDbWJNYXgAAAACAAAADEdBTUVTQ09VTlRFUgAAAANDTUIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAD2dhbWVMYWJlbENtYk1heAAAAAIFAAAADEdBTUVTQ09VTlRFUgUAAAADQ01CAQAAAA5iZXRMYWJlbFN0YXR1cwAAAAEAAAAFaWRCZXQJAAEsAAAAAgkAASwAAAACAgAAAAJCXwUAAAAFaWRCZXQCAAAAB19TVEFUVVMBAAAADGJldExhYmVsSW5mbwAAAAEAAAAFaWRCZXQJAAEsAAAAAgkAASwAAAACAgAAAAJCXwUAAAAFaWRCZXQCAAAABV9JTkZPAQAAAAxiZXRHZXRTdGF0dXMAAAABAAAABWlkQmV0CQAEHQAAAAIFAAAABHRoaXMJAQAAAA5iZXRMYWJlbFN0YXR1cwAAAAEFAAAABWlkQmV0AQAAAApiZXRHZXRJbmZvAAAAAQAAAAVpZEJldAkABB0AAAACBQAAAAR0aGlzCQEAAAAMYmV0TGFiZWxJbmZvAAAAAQUAAAAFaWRCZXQBAAAAD2FkZHJlc3NMYWJlbFdvbgAAAAEAAAAEYWRkcgkAASwA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AAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAGGdhbWVzTGFiZWxUb3RhbEFtb3VudEJldAkAAGQAAAACCQEAAAAFdmFsdWUAAAABCQEAAAAWZ2FtZXNHZXRUb3RhbEFtb3VudEJldAAAAAAFAAAABmFtb3VudAUAAAADbmlsBAAAAA9UT1RBTEFERFJFU1NCRVQJAABkAAAAAgkBAAAABXZhbHVlAAAAAQkBAAAAF2dhbWVzR2V0VG90YWxBZGRyZXNzQmV0AAAAAAAAAAAAAAAAAQQAAAAJZGF0YUZpbmFsAwkAAAAAAAACBQAAAA1BRERSRVNTQU1PVU5UAAAAAAAAAAAACQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAATcG9pbnRlckFkZHJlc3NMYWJlbAAAAAEJAAGkAAAAAQUAAAAPVE9UQUxBRERSRVNTQkVUBQAAAAdhZGRyZXNzCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABlnYW1lc0xhYmVsVG90YWxBZGRyZXNzQmV0BQAAAA9UT1RBTEFERFJFU1NCRVQFAAAABGRhdGEFAAAABGRhdGEJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABBQAAAAlkYXRhRmluYWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAAPc2VydmVyUHVibGljS2V5BQAAAANmZWUFAAAACW15QXNzZXRJZAUAAAADbmlsCQAAAgAAAAECAAAAFldBVkVTX0ZFRV9OT1RfQUNDRVBURUQJAAACAAAAAQIAAAASV0FWRVNfTk9UX0FDQ0VQVEVECQAAAgAAAAECAAAADkdBTUVfTk9UX0ZPVU5ECQAAAgAAAAECAAAADkdBTUVfTk9UX0ZPVU5ECQAAAgAAAAECAAAADkdBTUVfTk9UX0ZPVU5ECQAAAgAAAAECAAAAC0lOSVRfTkVFREVEAAAAAWkBAAAABmdldFdpbgAAAAEAAAADQkVUAwkBAAAAD2NoZWNrUGVybWlzc2lvbgAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkA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AAAAByRtYXRjaDAJAQAAAA9nYW1lc0dldENvdW50ZXIAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAADEdBTUVTQ09VTlRFUgUAAAAHJG1hdGNoMAMJAAAAAAAAAgUAAAAMR0FNRVNDT1VOVEVSAAAAAAAAAAAACQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAD3NlcnZlclB1YmxpY0tleQUAAAAGYW1vdW50BQAAAAlteUFzc2V0SWQFAAAAA25pbAQAAAAKQ1VSUlNUQVRVUwkBAAAABXZhbHVlAAAAAQkBAAAADWdhbWVHZXRTdGF0dXMAAAABBQAAAAxHQU1FU0NPVU5URVIDCQEAAAACIT0AAAACBQAAAApDVVJSU1RBVFVTAgAAAARTSE9XCQAAAgAAAAECAAAAF0NVUlJfU1RBVFVTX0lTX05PVF9TSE9XBAAAAARCRVRTCQEAAAAFdmFsdWUAAAABCQEAAAALZ2FtZUdldEJldHMAAAABBQAAAAxHQU1FU0NPVU5URVIEAAAABlBBU1NFRAkBAAAABXZhbHVlAAAAAQkBAAAADWdhbWVHZXRQYXNzZWQAAAABBQAAAAxHQU1FU0NPVU5URVIDCQEAAAACIT0AAAACBQAAAARCRVRTBQAAAAZQQVNTRUQJAAACAAAAAQIAAAAPV0FJVF9BTExfUEFTU0VECQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAD3NlcnZlclB1YmxpY0tleQUAAAAGYW1vdW50BQAAAAlteUFzc2V0SWQFAAAAA25pbAkAAAIAAAABAgAAAAtJTklUX05FRURFRAAAAAFpAQAAABNhbW91bnRXYXZlc1RvU2VydmVyAAAAAQAAAAZhbW91bnQDCQEAAAAPY2hlY2tQZXJtaXNzaW9uAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQAAAgAAAAECAAAAGGFtb3VudFRvV2FsbGV0X0ZPUkJCSURFTgkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAA9zZXJ2ZXJQdWJsaWNLZXkFAAAABmFtb3VudAUAAAAEdW5pdAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkhUhG6", "height": 1787958, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BQU8ZpEywkbnsAwCi7iiZU4VmRSD9ADC1McutAoGFvtr Next: GNATrKYNErMhFtZDF94NqbPNDqT4yh5o6c2FXHSCp7yv Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let copyright = "Copyright (c) 2019 MaDaMa Labs"
4+let copyright = "Copyright (c) 2021 MaDaMa Labs"
55
66 let creator = "@daidalos - twitter.com/tw_daidalos"
77
1515
1616 let myAssetId = base58'Ac7AwywpLnExZXmp7JnyqLoeyEaSWgrnisch3KKyoEUe'
1717
18-let fee = 500000
18+let feetmp = value(getInteger(this, "X_FEE"))
1919
20-let ONEWAVES = 100000000
20+let fee = if (isDefined(feetmp))
21+ then feetmp
22+ else 500000
23+
24+let UNITYtmp = value(getInteger(this, "X_UNITY"))
25+
26+let UNITY = if (isDefined(UNITYtmp))
27+ then UNITYtmp
28+ else 100000000
2129
2230 let periodGamePlay = 2
2331
188196 }
189197
190198
191-func checkBet (bet) = if (if (if (if (if (if ((bet == 10000000))
199+func checkBet (bet) = if (if (if (if (if (if ((bet == (UNITY / 10)))
192200 then true
193- else (bet == 20000000))
201+ else (bet == (UNITY / 5)))
194202 then true
195- else (bet == 50000000))
203+ else (bet == (UNITY / 2)))
196204 then true
197- else (bet == 100000000))
205+ else (bet == (UNITY * 1)))
198206 then true
199- else (bet == 200000000))
207+ else (bet == (UNITY * 2)))
200208 then true
201- else (bet == 500000000))
209+ else (bet == (UNITY * 1)))
202210 then 1
203211 else throw("BET_NOT_FOUND")
204212
213221
214222 func allowCmbMax (gamecounter,cmb,win) = match gameGetCmbMax(gamecounter, cmb) {
215223 case temp: Int =>
216- if (((temp + win) > 20000000000))
224+ if (((temp + win) > (200 * UNITY)))
217225 then throw("CMB_MAX_WIN")
218226 else 1
219227 case _ =>
475483
476484
477485 @Callable(i)
486+func setFee (val) = if (checkPermission(i.callerPublicKey))
487+ then throw("setFee_FORBBIDEN")
488+ else WriteSet([DataEntry("X_FEE", val)])
489+
490+
491+
492+@Callable(i)
493+func setUnity (val) = if (checkPermission(i.callerPublicKey))
494+ then throw("setUnity_FORBBIDEN")
495+ else WriteSet([DataEntry("X_UNITY", val)])
496+
497+
498+
499+@Callable(i)
478500 func initGame () = if (checkPermission(i.callerPublicKey))
479501 then throw("initGame_FORBBIDEN")
480502 else match gamesGetCounter() {
499521 then ((gameMax - 1) / 2)
500522 else (gameMax / 2)
501523 let sendData = WriteSet([DataEntry(gamesLabelCounter, newGameCounter), DataEntry(gameLabelStatus(newGameCounter), "PLAY"), DataEntry(gameLabelMax(newGameCounter), halfGameMax), DataEntry(gameLabelBets(newGameCounter), 0), DataEntry(gameLabelPassed(newGameCounter), 0), DataEntry(gameLabelHeight(newGameCounter), 0), DataEntry(gameLabelSumSha(newGameCounter), toBase58String(sha256(i.transactionId)))])
502- if ((ONEWAVES > halfGameMax))
524+ if ((UNITY > halfGameMax))
503525 then throw("BALANCE_IS_LOW")
504526 else if ((GAMESCOUNTER == 0))
505527 then sendData
563585
564586
565587 @Callable(i)
566-func amountToWallet (amount) = if (checkPermission(i.callerPublicKey))
588+func amountToServer (amount) = if (checkPermission(i.callerPublicKey))
567589 then throw("amountToWallet_FORBBIDEN")
568590 else match gamesGetCounter() {
569591 case GAMESCOUNTER: Int =>
588610
589611
590612 @Callable(i)
591-func betsFeeToServer () = if (checkPermission(i.callerPublicKey))
592- then throw("betsFeeToServer_FORBBIDEN")
593- else match gamesGetCounter() {
594- case GAMESCOUNTER: Int =>
595- if ((GAMESCOUNTER == 0))
596- then throw("NO_BETS_FEE")
597- else {
598- let CURRSTATUS = value(gameGetStatus(GAMESCOUNTER))
599- if ((CURRSTATUS != "SHOW"))
600- then throw("CURR_STATUS_IS_NOT_SHOW")
601- else {
602- let BETS = value(gameGetBets(GAMESCOUNTER))
603- let PASSED = value(gameGetPassed(GAMESCOUNTER))
604- if ((BETS != PASSED))
605- then throw("WAIT_ALL_PASSED")
606- else {
607- let BETSCOUNTER = value(gamesGetBetsCounter())
608- let BETSMOVED = value(gamesGetBetsFeeMoved())
609- ScriptResult(WriteSet([DataEntry(gamesLabelBetsFeeMoved, BETSCOUNTER)]), TransferSet([ScriptTransfer(addressFromPublicKey(serverPublicKey), ((BETSCOUNTER - BETSMOVED) * fee), myAssetId)]))
610- }
611- }
612- }
613- case _ =>
614- throw("INIT_NEEDED")
615- }
616-
617-
618-
619-@Callable(i)
620-func amountWavesToWallet (amount) = if (checkPermission(i.callerPublicKey))
613+func amountWavesToServer (amount) = if (checkPermission(i.callerPublicKey))
621614 then throw("amountToWallet_FORBBIDEN")
622- else match gamesGetCounter() {
623- case GAMESCOUNTER: Int =>
624- if ((GAMESCOUNTER == 0))
625- then TransferSet([ScriptTransfer(addressFromPublicKey(serverPublicKey), amount, unit)])
626- else {
627- let CURRSTATUS = value(gameGetStatus(GAMESCOUNTER))
628- if ((CURRSTATUS != "SHOW"))
629- then throw("CURR_STATUS_IS_NOT_SHOW")
630- else {
631- let BETS = value(gameGetBets(GAMESCOUNTER))
632- let PASSED = value(gameGetPassed(GAMESCOUNTER))
633- if ((BETS != PASSED))
634- then throw("WAIT_ALL_PASSED")
635- else TransferSet([ScriptTransfer(addressFromPublicKey(serverPublicKey), amount, unit)])
636- }
637- }
638- case _ =>
639- throw("INIT_NEEDED")
640- }
615+ else TransferSet([ScriptTransfer(addressFromPublicKey(serverPublicKey), amount, unit)])
641616
642617
643618 @Verifier(tx)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let copyright = "Copyright (c) 2019 MaDaMa Labs"
4+let copyright = "Copyright (c) 2021 MaDaMa Labs"
55
66 let creator = "@daidalos - twitter.com/tw_daidalos"
77
88 let team = "MaDaMa Labs https://gitlab.com/madamalabs/"
99
1010 let license = "MIT License"
1111
1212 let licenseLink = "tldrlegal.com/license/mit-license , opensource.org/licenses/MIT"
1313
1414 let serverPublicKey = base58'8mhKq6anPiMfYiWogTbKgVmFquQQam2H6SLs8XieX2CN'
1515
1616 let myAssetId = base58'Ac7AwywpLnExZXmp7JnyqLoeyEaSWgrnisch3KKyoEUe'
1717
18-let fee = 500000
18+let feetmp = value(getInteger(this, "X_FEE"))
1919
20-let ONEWAVES = 100000000
20+let fee = if (isDefined(feetmp))
21+ then feetmp
22+ else 500000
23+
24+let UNITYtmp = value(getInteger(this, "X_UNITY"))
25+
26+let UNITY = if (isDefined(UNITYtmp))
27+ then UNITYtmp
28+ else 100000000
2129
2230 let periodGamePlay = 2
2331
2432 let wheel = ["5", "24", "16", "33", "1", "20", "14", "31", "9", "22", "18", "29", "7", "28", "12", "35", "3", "26", "0", "32", "15", "19", "4", "21", "2", "25", "17", "34", "6", "27", "13", "36", "11", "30", "8", "23", "10"]
2533
2634 let RSAPUBLIC = fromBase64String("base64:MIIBJTANBgkqhkiG9w0BAQEFAAOCARIAMIIBDQKCAQEAtObfiwWyBFpSNJZmkxlwHy5vT+Jb+Vv6f7LlhKE9wNcC0Qp0rdyMwxLpdwfuLsKbRdBEbDhpb3dz1JPJiatlhKVKUsoQ25UQu9hv2oXyyEzJx86CGQq5HOr3YGGSdJR0LKq1PhbYrNmuS6jPDYobxssXyc/txsipSGwzMgVHcqt9OSiGQySZ8/9mtv42EefzFE95wuuy42KJKG7h0DTMfFSLTpqhS/Mbp8EKPuVb1huWsMKVL9QtOPYEXa9QPZa2WBPX5Y9BI1McRQ/Wf8WwqQtARpBfSVpkKPS1Amht2fEOxSSYRqG6IUsfK8xO9hxt+3+/Op/+IFJTGcGF8BrzWQIGCPw9/u27")
2735
2836 let gamesLabelCounter = "X_GAMESCOUNTER"
2937
3038 let gamesLabelBetsCounter = "X_BETSCOUNTER"
3139
3240 let gamesLabelBetsFeeMoved = "X_BETSFEEMOVED"
3341
3442 let gamesLabelTotalAmountWin = "X_TOTALAMOUNTWIN"
3543
3644 let gamesLabelTotalAmountBet = "X_TOTALAMOUNTBET"
3745
3846 let gamesLabelTotalAddressBet = "X_TOTALADDRESSBET"
3947
4048 func gamesGetCounter () = getInteger(this, gamesLabelCounter)
4149
4250
4351 func gamesGetBetsCounter () = getInteger(this, gamesLabelBetsCounter)
4452
4553
4654 func gamesGetBetsFeeMoved () = getInteger(this, gamesLabelBetsFeeMoved)
4755
4856
4957 func gamesGetTotalAmountWin () = getInteger(this, gamesLabelTotalAmountWin)
5058
5159
5260 func gamesGetTotalAmountBet () = getInteger(this, gamesLabelTotalAmountBet)
5361
5462
5563 func gamesGetTotalAddressBet () = getInteger(this, gamesLabelTotalAddressBet)
5664
5765
5866 func numberLabelCount (number) = ("N_" + number)
5967
6068
6169 func numberGetCount (number) = getInteger(this, numberLabelCount(number))
6270
6371
6472 func gameLabelStatus (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_STATUS")
6573
6674
6775 func gameLabelNumber (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_NUMBER")
6876
6977
7078 func gameLabelMax (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_MAX")
7179
7280
7381 func gameLabelBets (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_BETS")
7482
7583
7684 func gameLabelPassed (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_PASSED")
7785
7886
7987 func gameLabelHeight (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_HEIGHT")
8088
8189
8290 func gameLabelSumSha (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_SUMSHA")
8391
8492
8593 func gameLabelCmbMax (GAMESCOUNTER,CMB) = ((("G_" + toString(GAMESCOUNTER)) + "_C") + CMB)
8694
8795
8896 func gameGetStatus (GAMESCOUNTER) = getString(this, gameLabelStatus(GAMESCOUNTER))
8997
9098
9199 func gameGetNumber (GAMESCOUNTER) = getInteger(this, gameLabelNumber(GAMESCOUNTER))
92100
93101
94102 func gameGetMax (GAMESCOUNTER) = getInteger(this, gameLabelMax(GAMESCOUNTER))
95103
96104
97105 func gameGetBets (GAMESCOUNTER) = getInteger(this, gameLabelBets(GAMESCOUNTER))
98106
99107
100108 func gameGetPassed (GAMESCOUNTER) = getInteger(this, gameLabelPassed(GAMESCOUNTER))
101109
102110
103111 func gameGetHeight (GAMESCOUNTER) = getInteger(this, gameLabelHeight(GAMESCOUNTER))
104112
105113
106114 func gameGetSumSha (GAMESCOUNTER) = getString(this, gameLabelSumSha(GAMESCOUNTER))
107115
108116
109117 func gameGetCmbMax (GAMESCOUNTER,CMB) = getInteger(this, gameLabelCmbMax(GAMESCOUNTER, CMB))
110118
111119
112120 func betLabelStatus (idBet) = (("B_" + idBet) + "_STATUS")
113121
114122
115123 func betLabelInfo (idBet) = (("B_" + idBet) + "_INFO")
116124
117125
118126 func betGetStatus (idBet) = getString(this, betLabelStatus(idBet))
119127
120128
121129 func betGetInfo (idBet) = getString(this, betLabelInfo(idBet))
122130
123131
124132 func addressLabelWon (addr) = (("A_" + addr) + "_WON")
125133
126134
127135 func addressLabelAmount (addr) = (("A_" + addr) + "_AMOUNT")
128136
129137
130138 func addressLabelBets (addr) = (("A_" + addr) + "_BETS")
131139
132140
133141 func addressLabelHit (addr) = (("A_" + addr) + "_HIT")
134142
135143
136144 func addressGetWon (addr) = getInteger(this, addressLabelWon(addr))
137145
138146
139147 func addressGetAmount (addr) = getInteger(this, addressLabelAmount(addr))
140148
141149
142150 func addressGetBets (addr) = getInteger(this, addressLabelBets(addr))
143151
144152
145153 func addressGetHit (addr) = getInteger(this, addressLabelHit(addr))
146154
147155
148156 func pointerAddressLabel (id) = ("P_" + id)
149157
150158
151159 func checkPermission (callerPublicKey) = (callerPublicKey != serverPublicKey)
152160
153161
154162 func gameNewMax (win) = match gamesGetCounter() {
155163 case GAMESCOUNTER: Int =>
156164 match gameGetMax(GAMESCOUNTER) {
157165 case CURRMAX: Int =>
158166 let temp = (CURRMAX - win)
159167 if ((0 > temp))
160168 then throw("BET_IS_BLOCK")
161169 else temp
162170 case _ =>
163171 throw("GAME_NOT_FOUND")
164172 }
165173 case _ =>
166174 throw("INIT_NEEDED")
167175 }
168176
169177
170178 func gameNewSumSha (txId) = match gamesGetCounter() {
171179 case GAMESCOUNTER: Int =>
172180 match gameGetSumSha(GAMESCOUNTER) {
173181 case SUMSHA: String =>
174182 toBase58String(sha256((fromBase58String(SUMSHA) + txId)))
175183 case _ =>
176184 throw("GAME_NOT_FOUND")
177185 }
178186 case _ =>
179187 throw("INIT_NEEDED")
180188 }
181189
182190
183191 func checkIdBet (idBet) = match betGetInfo(idBet) {
184192 case temp: String =>
185193 throw("PLAYER_ALREADY_DEFINED")
186194 case _ =>
187195 1
188196 }
189197
190198
191-func checkBet (bet) = if (if (if (if (if (if ((bet == 10000000))
199+func checkBet (bet) = if (if (if (if (if (if ((bet == (UNITY / 10)))
192200 then true
193- else (bet == 20000000))
201+ else (bet == (UNITY / 5)))
194202 then true
195- else (bet == 50000000))
203+ else (bet == (UNITY / 2)))
196204 then true
197- else (bet == 100000000))
205+ else (bet == (UNITY * 1)))
198206 then true
199- else (bet == 200000000))
207+ else (bet == (UNITY * 2)))
200208 then true
201- else (bet == 500000000))
209+ else (bet == (UNITY * 1)))
202210 then 1
203211 else throw("BET_NOT_FOUND")
204212
205213
206214 func getCmb (cmb) = match getInteger(this, ("C" + cmb)) {
207215 case temp: Int =>
208216 temp
209217 case _ =>
210218 throw("CMB_NOT_FOUND")
211219 }
212220
213221
214222 func allowCmbMax (gamecounter,cmb,win) = match gameGetCmbMax(gamecounter, cmb) {
215223 case temp: Int =>
216- if (((temp + win) > 20000000000))
224+ if (((temp + win) > (200 * UNITY)))
217225 then throw("CMB_MAX_WIN")
218226 else 1
219227 case _ =>
220228 1
221229 }
222230
223231
224232 @Callable(i)
225233 func bet (id,cmb) = match gamesGetCounter() {
226234 case GAMESCOUNTER: Int =>
227235 if ((id != GAMESCOUNTER))
228236 then throw("GAME_ID_WRONG")
229237 else match gameGetStatus(GAMESCOUNTER) {
230238 case CURRSTATUS: String =>
231239 if ((CURRSTATUS != "PLAY"))
232240 then throw("CURR_STATUS_IS_NOT_PLAY")
233241 else match gameGetHeight(GAMESCOUNTER) {
234242 case GAMEHEIGHT: Int =>
235243 if (if ((GAMEHEIGHT != 0))
236244 then (height > (GAMEHEIGHT + periodGamePlay))
237245 else false)
238246 then throw("GAME_IS_END")
239247 else match gameGetBets(GAMESCOUNTER) {
240248 case BETS: Int =>
241249 let idBet = ((toString(GAMESCOUNTER) + "_") + toString((BETS + 1)))
242250 let payment = value(i.payment)
243251 match payment.assetId {
244252 case assetId: ByteVector =>
245253 if ((assetId != myAssetId))
246254 then throw("ONLY_TOKEN_ACCEPTED")
247255 else match i.feeAssetId {
248256 case feeAssetId: ByteVector =>
249257 if ((feeAssetId != myAssetId))
250258 then throw("ONLY_TOKEN_FEE_ACCEPTED")
251259 else {
252260 let amount = (payment.amount - fee)
253261 let win = (((checkIdBet(idBet) * checkBet(amount)) * getCmb(cmb)) * amount)
254262 let winmax = (win * allowCmbMax(GAMESCOUNTER, cmb, win))
255263 let address = toBase58String(i.caller.bytes)
256264 let info = ((((((address + "||") + cmb) + "||") + toString(amount)) + "||") + toString(winmax))
257265 let ADDRESSAMOUNT = match addressGetAmount(address) {
258266 case temp: Int =>
259267 temp
260268 case _ =>
261269 0
262270 }
263271 let ADDRESSBETS = match addressGetBets(address) {
264272 case temp: Int =>
265273 temp
266274 case _ =>
267275 0
268276 }
269277 let CMBMAX = match gameGetCmbMax(GAMESCOUNTER, cmb) {
270278 case temp: Int =>
271279 temp
272280 case _ =>
273281 0
274282 }
275283 let data = [DataEntry(betLabelInfo(idBet), info), DataEntry(betLabelStatus(idBet), "ACCEPT"), DataEntry(gameLabelBets(GAMESCOUNTER), (BETS + 1)), DataEntry(gameLabelHeight(GAMESCOUNTER), if ((GAMEHEIGHT == 0))
276284 then height
277285 else GAMEHEIGHT), DataEntry(gameLabelMax(GAMESCOUNTER), gameNewMax(winmax)), DataEntry(gameLabelSumSha(GAMESCOUNTER), gameNewSumSha(i.transactionId)), DataEntry(gameLabelCmbMax(GAMESCOUNTER, cmb), (CMBMAX + winmax)), DataEntry(addressLabelAmount(address), (ADDRESSAMOUNT + amount)), DataEntry(addressLabelBets(address), (ADDRESSBETS + 1)), DataEntry(gamesLabelBetsCounter, (value(gamesGetBetsCounter()) + 1)), DataEntry(gamesLabelTotalAmountBet, (value(gamesGetTotalAmountBet()) + amount))]
278286 let TOTALADDRESSBET = (value(gamesGetTotalAddressBet()) + 1)
279287 let dataFinal = if ((ADDRESSAMOUNT == 0))
280288 then [DataEntry(pointerAddressLabel(toString(TOTALADDRESSBET)), address), DataEntry(gamesLabelTotalAddressBet, TOTALADDRESSBET)] :: data
281289 else data
282290 ScriptResult(WriteSet(dataFinal), TransferSet([ScriptTransfer(addressFromPublicKey(serverPublicKey), fee, myAssetId)]))
283291 }
284292 case _ =>
285293 throw("WAVES_FEE_NOT_ACCEPTED")
286294 }
287295 case _ =>
288296 throw("WAVES_NOT_ACCEPTED")
289297 }
290298 case _ =>
291299 throw("GAME_NOT_FOUND")
292300 }
293301 case _ =>
294302 throw("GAME_NOT_FOUND")
295303 }
296304 case _ =>
297305 throw("GAME_NOT_FOUND")
298306 }
299307 case _ =>
300308 throw("INIT_NEEDED")
301309 }
302310
303311
304312
305313 @Callable(i)
306314 func getWin (BET) = if (checkPermission(i.callerPublicKey))
307315 then throw("getWin_FORBBIDEN")
308316 else match gamesGetCounter() {
309317 case GAMESCOUNTER: Int =>
310318 match gameGetStatus(GAMESCOUNTER) {
311319 case CURRSTATUS: String =>
312320 if ((CURRSTATUS != "SHOW"))
313321 then throw("CURR_STATUS_IS_NOT_SHOW")
314322 else match gameGetNumber(GAMESCOUNTER) {
315323 case NUMBER: Int =>
316324 let idBet = ((toString(GAMESCOUNTER) + "_") + toString(BET))
317325 let numberString = (("_" + toString(NUMBER)) + "_")
318326 let red = "|_1_3_5_7_9_12_14_16_18_19_21_23_25_27_30_32_34_36_|"
319327 let black = "|_2_4_6_8_10_11_13_15_17_20_22_24_26_28_29_31_33_35_|"
320328 let indexRed = match indexOf(red, numberString) {
321329 case temp: Int =>
322330 (temp > 0)
323331 case _ =>
324332 false
325333 }
326334 let indexBlack = match indexOf(black, numberString) {
327335 case temp: Int =>
328336 (temp > 0)
329337 case _ =>
330338 false
331339 }
332340 let cmbRB = ("_" + (if (indexRed)
333341 then "RED"
334342 else if (indexBlack)
335343 then "BLACK"
336344 else "NDF"))
337345 let cmbEO = ("_" + (if (if ((0 >= NUMBER))
338346 then true
339347 else (NUMBER > 36))
340348 then "NDF"
341349 else if (((NUMBER % 2) == 0))
342350 then "EVEN"
343351 else "ODD"))
344352 let cmbLH = ("_" + (if (if ((NUMBER >= 1))
345353 then (18 >= NUMBER)
346354 else false)
347355 then "LOW"
348356 else if (if ((NUMBER >= 19))
349357 then (36 >= NUMBER)
350358 else false)
351359 then "HIGH"
352360 else "NDF"))
353361 let cmbDZ = ("_" + (if (if ((NUMBER >= 1))
354362 then (12 >= NUMBER)
355363 else false)
356364 then "DOZER1"
357365 else if (if ((NUMBER >= 13))
358366 then (24 >= NUMBER)
359367 else false)
360368 then "DOZER2"
361369 else if (if ((NUMBER >= 25))
362370 then (36 >= NUMBER)
363371 else false)
364372 then "DOZER3"
365373 else "NDF"))
366374 let cmbCL = ("_" + (if (if ((0 >= NUMBER))
367375 then true
368376 else (NUMBER > 36))
369377 then "NDF"
370378 else if (((NUMBER % 3) == 1))
371379 then "COLUMN1"
372380 else if (((NUMBER % 3) == 2))
373381 then "COLUMN2"
374382 else "COLUMN3"))
375383 let STATUS = match betGetStatus(idBet) {
376384 case temp: String =>
377385 temp
378386 case _ =>
379387 throw("BET_STATUS_NOT_FOUND")
380388 }
381389 let INFO = match betGetInfo(idBet) {
382390 case temp: String =>
383391 temp
384392 case _ =>
385393 throw("BET_INFO_NOT_FOUND")
386394 }
387395 let INFOS = split(INFO, "||")
388396 let ADDRESSSTRING = INFOS[0]
389397 let ADDRESS = value(addressFromString(ADDRESSSTRING))
390398 let CMB = INFOS[1]
391399 let AMOUNT = value(parseInt(INFOS[2]))
392400 let WIN = value(parseInt(INFOS[3]))
393401 let ADDRESSWON = match addressGetWon(ADDRESSSTRING) {
394402 case temp: Int =>
395403 temp
396404 case _ =>
397405 0
398406 }
399407 let ADDRESSHIT = match addressGetHit(ADDRESSSTRING) {
400408 case temp: Int =>
401409 temp
402410 case _ =>
403411 0
404412 }
405413 let DATAPASSED = DataEntry(gameLabelPassed(GAMESCOUNTER), (value(gameGetPassed(GAMESCOUNTER)) + 1))
406414 if (if (if (if (if ((STATUS == "ACCEPT"))
407415 then (CMB != "")
408416 else false)
409417 then (WIN > 0)
410418 else false)
411419 then (AMOUNT > 0)
412420 else false)
413421 then isDefined(ADDRESS)
414422 else false)
415423 then {
416424 let cmbIN = match indexOf((("|" + CMB) + "|"), numberString) {
417425 case temp: Int =>
418426 (temp > 0)
419427 case _ =>
420428 false
421429 }
422430 if (if (if (if (if (if (cmbIN)
423431 then true
424432 else (CMB == cmbRB))
425433 then true
426434 else (CMB == cmbEO))
427435 then true
428436 else (CMB == cmbLH))
429437 then true
430438 else (CMB == cmbDZ))
431439 then true
432440 else (CMB == cmbCL))
433441 then ScriptResult(WriteSet([DATAPASSED, DataEntry(betLabelStatus(idBet), "WON"), DataEntry(addressLabelWon(ADDRESSSTRING), ((ADDRESSWON + WIN) + AMOUNT)), DataEntry(addressLabelHit(ADDRESSSTRING), (ADDRESSHIT + 1)), DataEntry(gamesLabelTotalAmountWin, ((value(gamesGetTotalAmountWin()) + WIN) + AMOUNT))]), TransferSet([ScriptTransfer(ADDRESS, (WIN + AMOUNT), myAssetId)]))
434442 else WriteSet([DATAPASSED, DataEntry(betLabelStatus(idBet), "LOST")])
435443 }
436444 else throw("GET_WIN_ALREADY_CALLED")
437445 case _ =>
438446 throw("GAME_NOT_FOUND")
439447 }
440448 case _ =>
441449 throw("GAME_NOT_FOUND")
442450 }
443451 case _ =>
444452 throw("INIT_NEEDED")
445453 }
446454
447455
448456
449457 @Callable(i)
450458 func addCmb (cmb,val) = if (checkPermission(i.callerPublicKey))
451459 then throw("addCmb_FORBBIDEN")
452460 else match gamesGetCounter() {
453461 case GAMESCOUNTER: Int =>
454462 if ((GAMESCOUNTER != 0))
455463 then throw("INIT_ALREADY_DONE")
456464 else if (if (if (if (if (if (if ((val == 1))
457465 then true
458466 else (val == 2))
459467 then true
460468 else (val == 5))
461469 then true
462470 else (val == 8))
463471 then true
464472 else (val == 11))
465473 then true
466474 else (val == 17))
467475 then true
468476 else (val == 35))
469477 then WriteSet([DataEntry(("C" + cmb), val)])
470478 else throw("AMOUNT_NOT_FOUND")
471479 case _ =>
472480 throw("INIT_NEEDED")
473481 }
474482
475483
476484
477485 @Callable(i)
486+func setFee (val) = if (checkPermission(i.callerPublicKey))
487+ then throw("setFee_FORBBIDEN")
488+ else WriteSet([DataEntry("X_FEE", val)])
489+
490+
491+
492+@Callable(i)
493+func setUnity (val) = if (checkPermission(i.callerPublicKey))
494+ then throw("setUnity_FORBBIDEN")
495+ else WriteSet([DataEntry("X_UNITY", val)])
496+
497+
498+
499+@Callable(i)
478500 func initGame () = if (checkPermission(i.callerPublicKey))
479501 then throw("initGame_FORBBIDEN")
480502 else match gamesGetCounter() {
481503 case GAMESCOUNTER: Int =>
482504 throw("INIT_ALREADY_DONE")
483505 case _ =>
484506 WriteSet([DataEntry(gamesLabelCounter, 0), DataEntry(gamesLabelBetsCounter, 0), DataEntry(gamesLabelBetsFeeMoved, 0), DataEntry(gamesLabelTotalAmountWin, 0), DataEntry(gamesLabelTotalAmountBet, 0), DataEntry(gamesLabelTotalAddressBet, 0)])
485507 }
486508
487509
488510
489511 @Callable(i)
490512 func newGame () = if (checkPermission(i.callerPublicKey))
491513 then throw("newGame_FORBBIDEN")
492514 else match gamesGetCounter() {
493515 case GAMESCOUNTER: Int =>
494516 let newGameCounter = (GAMESCOUNTER + 1)
495517 let BETSCOUNTER = value(gamesGetBetsCounter())
496518 let BETSMOVED = value(gamesGetBetsFeeMoved())
497519 let gameMax = (assetBalance(this, myAssetId) - ((BETSCOUNTER - BETSMOVED) * fee))
498520 let halfGameMax = if (((gameMax % 2) == 1))
499521 then ((gameMax - 1) / 2)
500522 else (gameMax / 2)
501523 let sendData = WriteSet([DataEntry(gamesLabelCounter, newGameCounter), DataEntry(gameLabelStatus(newGameCounter), "PLAY"), DataEntry(gameLabelMax(newGameCounter), halfGameMax), DataEntry(gameLabelBets(newGameCounter), 0), DataEntry(gameLabelPassed(newGameCounter), 0), DataEntry(gameLabelHeight(newGameCounter), 0), DataEntry(gameLabelSumSha(newGameCounter), toBase58String(sha256(i.transactionId)))])
502- if ((ONEWAVES > halfGameMax))
524+ if ((UNITY > halfGameMax))
503525 then throw("BALANCE_IS_LOW")
504526 else if ((GAMESCOUNTER == 0))
505527 then sendData
506528 else {
507529 let CURRSTATUS = value(gameGetStatus(GAMESCOUNTER))
508530 if ((CURRSTATUS != "SHOW"))
509531 then throw("CURR_STATUS_IS_NOT_SHOW")
510532 else {
511533 let BETS = value(gameGetBets(GAMESCOUNTER))
512534 let PASSED = value(gameGetPassed(GAMESCOUNTER))
513535 if ((BETS != PASSED))
514536 then throw("WAIT_ALL_PASSED")
515537 else sendData
516538 }
517539 }
518540 case _ =>
519541 throw("INIT_NEEDED")
520542 }
521543
522544
523545
524546 @Callable(i)
525547 func showGame (rsaSign) = if (checkPermission(i.callerPublicKey))
526548 then throw("showGame_FORBBIDEN")
527549 else match gamesGetCounter() {
528550 case GAMESCOUNTER: Int =>
529551 match gameGetSumSha(GAMESCOUNTER) {
530552 case SUMSHA: String =>
531553 let rsaSigValid = rsaVerify(SHA256, fromBase58String(SUMSHA), rsaSign, RSAPUBLIC)
532554 if (!(rsaSigValid))
533555 then throw("INVALID_RSA_SIGN")
534556 else {
535557 let index = (toInt(sha256(rsaSign)) % 37)
536558 let numberString = wheel[index]
537559 let number = value(parseInt(numberString))
538560 let numberCount = match numberGetCount(numberString) {
539561 case temp: Int =>
540562 temp
541563 case _ =>
542564 0
543565 }
544566 let CURRSTATUS = value(gameGetStatus(GAMESCOUNTER))
545567 if ((CURRSTATUS != "PLAY"))
546568 then throw("CURR_STATUS_IS_NOT_PLAY")
547569 else {
548570 let GAMEHEIGHT = value(gameGetHeight(GAMESCOUNTER))
549571 if (if ((GAMEHEIGHT == 0))
550572 then true
551573 else ((GAMEHEIGHT + periodGamePlay) >= height))
552574 then throw("GAME_IS_NOT_END")
553575 else WriteSet([DataEntry(gameLabelStatus(GAMESCOUNTER), "SHOW"), DataEntry(gameLabelNumber(GAMESCOUNTER), number), DataEntry(numberLabelCount(numberString), (numberCount + 1))])
554576 }
555577 }
556578 case _ =>
557579 throw("GAME_NOT_FOUND")
558580 }
559581 case _ =>
560582 throw("INIT_NEEDED")
561583 }
562584
563585
564586
565587 @Callable(i)
566-func amountToWallet (amount) = if (checkPermission(i.callerPublicKey))
588+func amountToServer (amount) = if (checkPermission(i.callerPublicKey))
567589 then throw("amountToWallet_FORBBIDEN")
568590 else match gamesGetCounter() {
569591 case GAMESCOUNTER: Int =>
570592 if ((GAMESCOUNTER == 0))
571593 then TransferSet([ScriptTransfer(addressFromPublicKey(serverPublicKey), amount, myAssetId)])
572594 else {
573595 let CURRSTATUS = value(gameGetStatus(GAMESCOUNTER))
574596 if ((CURRSTATUS != "SHOW"))
575597 then throw("CURR_STATUS_IS_NOT_SHOW")
576598 else {
577599 let BETS = value(gameGetBets(GAMESCOUNTER))
578600 let PASSED = value(gameGetPassed(GAMESCOUNTER))
579601 if ((BETS != PASSED))
580602 then throw("WAIT_ALL_PASSED")
581603 else TransferSet([ScriptTransfer(addressFromPublicKey(serverPublicKey), amount, myAssetId)])
582604 }
583605 }
584606 case _ =>
585607 throw("INIT_NEEDED")
586608 }
587609
588610
589611
590612 @Callable(i)
591-func betsFeeToServer () = if (checkPermission(i.callerPublicKey))
592- then throw("betsFeeToServer_FORBBIDEN")
593- else match gamesGetCounter() {
594- case GAMESCOUNTER: Int =>
595- if ((GAMESCOUNTER == 0))
596- then throw("NO_BETS_FEE")
597- else {
598- let CURRSTATUS = value(gameGetStatus(GAMESCOUNTER))
599- if ((CURRSTATUS != "SHOW"))
600- then throw("CURR_STATUS_IS_NOT_SHOW")
601- else {
602- let BETS = value(gameGetBets(GAMESCOUNTER))
603- let PASSED = value(gameGetPassed(GAMESCOUNTER))
604- if ((BETS != PASSED))
605- then throw("WAIT_ALL_PASSED")
606- else {
607- let BETSCOUNTER = value(gamesGetBetsCounter())
608- let BETSMOVED = value(gamesGetBetsFeeMoved())
609- ScriptResult(WriteSet([DataEntry(gamesLabelBetsFeeMoved, BETSCOUNTER)]), TransferSet([ScriptTransfer(addressFromPublicKey(serverPublicKey), ((BETSCOUNTER - BETSMOVED) * fee), myAssetId)]))
610- }
611- }
612- }
613- case _ =>
614- throw("INIT_NEEDED")
615- }
616-
617-
618-
619-@Callable(i)
620-func amountWavesToWallet (amount) = if (checkPermission(i.callerPublicKey))
613+func amountWavesToServer (amount) = if (checkPermission(i.callerPublicKey))
621614 then throw("amountToWallet_FORBBIDEN")
622- else match gamesGetCounter() {
623- case GAMESCOUNTER: Int =>
624- if ((GAMESCOUNTER == 0))
625- then TransferSet([ScriptTransfer(addressFromPublicKey(serverPublicKey), amount, unit)])
626- else {
627- let CURRSTATUS = value(gameGetStatus(GAMESCOUNTER))
628- if ((CURRSTATUS != "SHOW"))
629- then throw("CURR_STATUS_IS_NOT_SHOW")
630- else {
631- let BETS = value(gameGetBets(GAMESCOUNTER))
632- let PASSED = value(gameGetPassed(GAMESCOUNTER))
633- if ((BETS != PASSED))
634- then throw("WAIT_ALL_PASSED")
635- else TransferSet([ScriptTransfer(addressFromPublicKey(serverPublicKey), amount, unit)])
636- }
637- }
638- case _ =>
639- throw("INIT_NEEDED")
640- }
615+ else TransferSet([ScriptTransfer(addressFromPublicKey(serverPublicKey), amount, unit)])
641616
642617
643618 @Verifier(tx)
644619 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
645620

github/deemru/w8io/c3f4982 
64.98 ms