tx · 9U79GLngPrxAjh2DswhqT7pH9WPuSWNhdBYMRvagPRE6

3MwBfmVaMPjFur92U5EDgbHxJk1tVCBCm8c:  -0.01500000 Waves

2020.06.16 17:36 [1046196] smart account 3MwBfmVaMPjFur92U5EDgbHxJk1tVCBCm8c > SELF 0.00000000 Waves

{ "type": 13, "id": "9U79GLngPrxAjh2DswhqT7pH9WPuSWNhdBYMRvagPRE6", "fee": 1500000, "feeAssetId": null, "timestamp": 1592318206134, "version": 1, "sender": "3MwBfmVaMPjFur92U5EDgbHxJk1tVCBCm8c", "senderPublicKey": "Dw6VyZcg2wVrzukmHr68JnEQVG2zQEYoQu7enniXaLZ4", "proofs": [ "c46mqa82LpLp1DzDLHEdS1NbYp5sQ6Bq5BddyrwsaN6iBsWqeufbMgUnBp36far8UAZBtN6j3uZxy7HsGKfkXfS" ], "script": "base64:AAIDAAAAAAAAAA0IARIDCgEIEgQKAggCAAAALAAAAAAGV0FWRVNEAAAAAAAF9eEAAAAAAAVVU0RORAAAAAAAAA9CQAAAAAAIREVDSU1BTFMJAARMAAAAAgUAAAAGV0FWRVNECQAETAAAAAIFAAAABVVTRE5EBQAAAANuaWwAAAAABkFTU0VUUwkABEwAAAACBQAAAAR1bml0CQAETAAAAAIJAAJZAAAAAQIAAAAsMjVGRXFFalJrcUs2eUNraVQ3THo2U0FZejdnVUZDdHhmQ0NobnJWRkQ1QVQFAAAAA25pbAAAAAAJUlNBUFVCTElDCQACWwAAAAECAAABj2Jhc2U2NDpNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQW1wdVhjSS9vNHBJQjV5d3Y5RE9PR2FwVEJVd1JWbE0vNitINmhGZWxPWHRrcndZL1lJdG1QeEVEcHo3ckFlclFQUWU5dERQRWFBdi9HbmxFenR5Yk9GWGd1OUR6RGU4WW9NUkQxdmFrZ29BY29nbWJZNThRRDZLTWo1SGtvVmoveVROSWM5c3pqNXFoSWxyQWRtYjNLTEw2aFFVN3k4K0pqNjlCV1ZQc2FRZ2tzcFNkZVl0YjF0SFFjN3Q5NW43T1o1NnIyQTdHMytiUWY2blNNa1BrQWhJckVwYkNtNThvaUdCY3pkVGQvTHFGU1ZvdFpzYkw3WWg2U0hMZm5IZUQrUWdjZkpybmFtOE9ITUdKRUpUUlhqSUxlSEdqbFJDUDhvVnBpb0hyeTFTMnhQeDVzVnpJbTJNTStDelllbkFHbG8wajI2YXRCaGlVTG9UdWx3RDNwUUlEQVFBQgAAAAAGU0VSVkVSCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAECAAAAIzNOQ2lHMjhMbVd5VGlnV0cxM0U1UW52ZEhCc1pGWVhTUzJqAAAAABNSQU5ET1JBQ0xFVElNRUZSQU1FAAAAAAAAABDgAAAAAARCRVQxAAAAAAAAAAABAAAAAARCRVQyAAAAAAAAAAACAAAAAARCRVQ0AAAAAAAAAAAEAAAAAARCRVQ4AAAAAAAAAAAIAAAAAAVCRVQxNAAAAAAAAAAADgAAAAAIUkFURU1VTFQAAAAAAAAAJxAAAAAABVJBVEUxAAAA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R2V0V2luQW1vdW50AAAAAwkAAGUAAAACCAUAAAABcAAAAAZhbW91bnQIBQAAAAFpAAAAA2ZlZQUAAAAHYXNzZXRJZAUAAAAMcGxheWVyQ2hvaWNlBAAAAA5wbGF5ZXJQdWJLZXk1OAkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAACGdhbWVEYXRhCQEAAAAOZm9ybWF0R2FtZURhdGEAAAAHBQAAAA5TVEFURVNVQk1JVFRFRAUAAAAMcGxheWVyQ2hvaWNlBQAAAA5wbGF5ZXJQdWJLZXk1OAUAAAAGaGVpZ2h0BQAAAAl3aW5BbW91bnQFAAAAB2Fzc2V0SWQCAAAAAAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAGRAAAAAgUAAAAOUkVTRVJWQVRJT05LRVkFAAAAB2Fzc2V0SWQJAQAAABVpbmNyZWFzZVJlc2VydmVBbW91bnQAAAACBQAAAAl3aW5BbW91bnQFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADGluY3JlbWVudEludAAAAAEFAAAAD0dBTUVTQ09VTlRFUktFWQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAGZ2FtZUlkBQAAAAhnYW1lRGF0YQUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAABlNFUlZFUgUAAAAKY29tbWlzc2lvbggFAAAAAXAAAAAHYXNzZXRJZAUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAgAAAAZnYW1lSWQAAAAHcnNhU2lnbgQAAAAIZ2FtZURhdGEJAQAAAA9leHRyYWN0R2FtZURhdGEAAAABBQAAAAZnYW1lSWQEAAAACWdhbWVTdGF0ZQkAAZEAAAACBQAAAAhnYW1lRGF0YQUAAAAMSWR4R2FtZVN0YXRlBAAAAAxwbGF5ZXJDaG9pY2UJAAGRAAAAAgUAAAAIZ2FtZURhdGEFAAAAD0lkeFBsYXllckNob2ljZQQAAAANc3RhcnRlZEhlaWdodAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGdhbWVEYXRhBQAAABBJZHhTdGFydGVkSGVpZ2h0BAAAAAl3aW5BbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhnYW1lRGF0YQUAAAAMSWR4V2luQW1vdW50BAAAAAdhc3NldElkCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIZ2FtZURhdGEFAAAACklkeEFzc2V0SWQEAAAADnBsYXllclB1YktleTU4CQABkQAAAAIFAAAACGdhbWVEYXRhBQAAABFJZHhQbGF5ZXJQdWJLZXk1OAQAAAANcGxheWVyQWRkcmVzcwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQkAAlkAAAABBQAAAA5wbGF5ZXJQdWJLZXk1OAQAAAAMd2luQnlUaW1lb3V0CQAAZgAAAAIJAABlAAAAAgUAAAAGaGVpZ2h0BQAAAA1zdGFydGVkSGVpZ2h0BQAAABNSQU5ET1JBQ0xFVElNRUZSQU1FBAAAABFkZWNyZWFzZWRSZXNlcnZlcwkBAAAAFmRlY3JlYXNlUmVzZXJ2ZWRBbW91bnQAAAADBQAAAAZnYW1lSWQFAAAAB2Fzc2V0SWQFAAAACXdpbkFtb3VudAMJAQAAAAIhPQAAAAIFAAAACWdhbWVTdGF0ZQUAAAAOU1RBVEVTVUJNSVRURUQJAAACAAAAAQIAAAAkSW52YWxpZCBnYW1lIHN0YXRlIGZvciBwYXNzZWQgZ2FtZUlkAwUAAAAMd2luQnlUaW1lb3V0BAAAAApyYW5kQ2hvaXNlCQABLwAAAAIFAAAADHBsYXllckNob2ljZQAAAAAAAAAAAQQAAAALbmV3Z2FtZURhdGEJAQAAAA5mb3JtYXRHYW1lRGF0YQAAAAcFAAAACFNUQVRFV09OBQAAAAxwbGF5ZXJDaG9pY2UFAAAADnBsYXllclB1YktleTU4BQAAAA1zdGFydGVkSGVpZ2h0BQAAAAl3aW5BbW91bnQFAAAAB2Fzc2V0SWQFAAAACnJhbmRDaG9pc2UJAQAAAAx3aW5TY3JpcHRTZXQAAAAHBQAAAAZnYW1lSWQFAAAADXBsYXllckFkZHJlc3MFAAAACXdpbkFtb3VudAUAAAAHYXNzZXRJZAUAAAALbmV3Z2FtZURhdGEFAAAADHdpbkJ5VGltZW91dAUAAAARZGVjcmVhc2VkUmVzZXJ2ZXMEAAAACnJhbmRDaG9pc2UJAQAAABJnZW5lcmF0ZVJhbmRDaG9pc2UAAAACBQAAAAZnYW1lSWQFAAAAB3JzYVNpZ24DCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABlNFUlZFUgkAAAIAAAABAgAAACtSZWd1bGFyIHdpdGhkcmF3IGNhbiBiZSBkb25lIGJ5IHNlcnZlciBvbmx5AwkBAAAAC2lzUGxheWVyV2luAAAAAgUAAAAMcGxheWVyQ2hvaWNlBQAAAApyYW5kQ2hvaXNlBAAAAAtuZXdnYW1lRGF0YQkBAAAADmZvcm1hdEdhbWVEYXRhAAAABwUAAAAIU1RBVEVXT04FAAAADHBsYXllckNob2ljZQUAAAAOcGxheWVyUHViS2V5NTgFAAAADXN0YXJ0ZWRIZWlnaHQFAAAACXdpbkFtb3VudAUAAAAHYXNzZXRJZAUAAAAKcmFuZENob2lzZQkBAAAADHdpblNjcmlwdFNldAAAAAcFAAAABmdhbWVJZAUAAAANcGxheWVyQWRkcmVzcwUAAAAJd2luQW1vdW50BQAAAAdhc3NldElkBQAAAAtuZXdnYW1lRGF0YQUAAAAMd2luQnlUaW1lb3V0BQAAABFkZWNyZWFzZWRSZXNlcnZlcwQAAAALbmV3Z2FtZURhdGEJAQAAAA5mb3JtYXRHYW1lRGF0YQAAAAcFAAAACVNUQVRFTE9TVAUAAAAMcGxheWVyQ2hvaWNlBQAAAA5wbGF5ZXJQdWJLZXk1OAUAAAANc3RhcnRlZEhlaWdodAUAAAAJd2luQW1vdW50BQAAAAdhc3NldElkBQAAAApyYW5kQ2hvaXNlCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAZnYW1lSWQFAAAAC25ld2dhbWVEYXRhCQAETAAAAAIFAAAAEWRlY3JlYXNlZFJlc2VydmVzBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAN0dHgFAAAAByRtYXRjaDAEAAAAB2Fzc2V0SWQJAQAAABV2YWxpZGF0ZUFuZEdldEFzc2V0SWQAAAABCAUAAAADdHR4AAAAB2Fzc2V0SWQJAABnAAAAAgkAAGUAAAACCQAD6wAAAAIFAAAABHRoaXMIBQAAAAN0dHgAAAAHYXNzZXRJZAgFAAAAA3R0eAAAAAZhbW91bnQJAQAAAAhnZXRJbnRPcgAAAAIJAAGRAAAAAgUAAAAOUkVTRVJWQVRJT05LRVkFAAAAB2Fzc2V0SWQAAAAAAAAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBAAAAANzdHgFAAAAByRtYXRjaDADCQAAAAAAAAIJAQAAAAhnZXRJbnRPcgAAAAIJAAGRAAAAAgUAAAAOUkVTRVJWQVRJT05LRVkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAgkBAAAACGdldEludE9yAAAAAgkAAZEAAAACBQAAAA5SRVNFUlZBVElPTktFWQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAcHB8qs9Po=", "chainId": 84, "height": 1046196, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let WAVESD = 100000000
5+
6+let USDND = 1000000
7+
8+let DECIMALS = [WAVESD, USDND]
9+
10+let ASSETS = [unit, fromBase58String("25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT")]
11+
12+let RSAPUBLIC = fromBase64String("base64:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmpuXcI/o4pIB5ywv9DOOGapTBUwRVlM/6+H6hFelOXtkrwY/YItmPxEDpz7rAerQPQe9tDPEaAv/GnlEztybOFXgu9DzDe8YoMRD1vakgoAcogmbY58QD6KMj5HkoVj/yTNIc9szj5qhIlrAdmb3KLL6hQU7y8+Jj69BWVPsaQgkspSdeYtb1tHQc7t95n7OZ56r2A7G3+bQf6nSMkPkAhIrEpbCm58oiGBczdTd/LqFSVotZsbL7Yh6SHLfnHeD+QgcfJrnam8OHMGJEJTRXjILeHGjlRCP8oVpioHry1S2xPx5sVzIm2MM+CzYenAGlo0j26atBhiULoTulwD3pQIDAQAB")
13+
14+let SERVER = addressFromStringValue("3NCiG28LmWyTigWG13E5QnvdHBsZFYXSS2j")
15+
16+let RANDORACLETIMEFRAME = 4320
17+
18+let BET1 = 1
19+
20+let BET2 = 2
21+
22+let BET4 = 4
23+
24+let BET8 = 8
25+
26+let BET14 = 14
27+
28+let RATEMULT = 10000
29+
30+let RATE1 = 39655
31+
32+let RATE2 = 24600
33+
34+let RATE3 = 19000
35+
36+let RATE4 = 14200
37+
38+let RATE5 = 11400
39+
40+let RATES = [RATE1, RATE2, RATE3, RATE4, RATE5]
41+
42+let BETS = [BET1, BET2, BET4, BET8, BET14]
43+
44+let IdxGameState = 0
45+
46+let IdxPlayerChoice = 1
47+
48+let IdxPlayerPubKey58 = 2
49+
50+let IdxStartedHeight = 3
51+
52+let IdxWinAmount = 4
53+
54+let IdxAssetId = 5
55+
56+let RESERVATIONKEY = ["$RESERVED_AMOUNT_WAVES", "$RESERVED_AMOUNT_USDN"]
57+
58+let GAMESCOUNTERKEY = "$GAME_NUM"
59+
60+let STATESUBMITTED = "SUBMITTED"
61+
62+let STATEWON = "WON"
63+
64+let STATELOST = "LOST"
65+
66+func getIntOr (key,default) = if (isDefined(getInteger(this, key)))
67+ then getIntegerValue(this, key)
68+ else default
69+
70+
71+func setInt (key,value) = DataEntry(key, value)
72+
73+
74+func incrementInt (key) = setInt(key, (getIntOr(key, -1) + 1))
75+
76+
77+func changeInt (key,by) = setInt(key, (getIntOr(key, 0) + by))
78+
79+
80+func increaseReserveAmount (winAmount,assetId) = {
81+ let newReservedAmount = (getIntOr(RESERVATIONKEY[assetId], 0) + winAmount)
82+ if ((newReservedAmount > assetBalance(this, ASSETS[assetId])))
83+ then throw("Insufficient funds on Dice Roller account. Transaction was rejected for your safety.")
84+ else newReservedAmount
85+ }
86+
87+
88+func decreaseReservedAmount (gameId,assetId,winAmount) = if ((0 > (getIntOr(RESERVATIONKEY[assetId], 0) - winAmount)))
89+ then throw("Invalid Dice Roller account state - reserved amount is less than 0")
90+ else changeInt(RESERVATIONKEY[assetId], -(winAmount))
91+
92+
93+func validateAndGetAssetId (assetId) = if ((assetId == ASSETS[0]))
94+ then 0
95+ else if ((assetId == ASSETS[1]))
96+ then 1
97+ else throw("Invalid payment asset")
98+
99+
100+func validateBetAndGetWinAmount (bet,assetId,playerChoice) = {
101+ let dicesCount = size(playerChoice)
102+ func checkAmount (a,x) = if (a)
103+ then true
104+ else (bet == (x * DECIMALS[assetId]))
105+
106+ if (!({
107+ let $list47494782 = BETS
108+ let $size47494782 = size($list47494782)
109+ let $acc047494782 = false
110+ if (($size47494782 == 0))
111+ then $acc047494782
112+ else {
113+ let $acc147494782 = checkAmount($acc047494782, $list47494782[0])
114+ if (($size47494782 == 1))
115+ then $acc147494782
116+ else {
117+ let $acc247494782 = checkAmount($acc147494782, $list47494782[1])
118+ if (($size47494782 == 2))
119+ then $acc247494782
120+ else {
121+ let $acc347494782 = checkAmount($acc247494782, $list47494782[2])
122+ if (($size47494782 == 3))
123+ then $acc347494782
124+ else {
125+ let $acc447494782 = checkAmount($acc347494782, $list47494782[3])
126+ if (($size47494782 == 4))
127+ then $acc447494782
128+ else {
129+ let $acc547494782 = checkAmount($acc447494782, $list47494782[4])
130+ if (($size47494782 == 5))
131+ then $acc547494782
132+ else {
133+ let $acc647494782 = checkAmount($acc547494782, $list47494782[5])
134+ throw("List size exceed 5")
135+ }
136+ }
137+ }
138+ }
139+ }
140+ }
141+ }))
142+ then throw("Bet amount is not valid")
143+ else if ((parseInt(playerChoice) == unit))
144+ then throw("Invalid player's choice")
145+ else if (if ((1 > dicesCount))
146+ then true
147+ else (dicesCount > 5))
148+ then throw("Invalid dices count in player's choice")
149+ else ((bet * RATES[(dicesCount - 1)]) / RATEMULT)
150+ }
151+
152+
153+func generateRandChoise (gameId,rsaSign) = {
154+ let rsaSigValid = rsaVerify(SHA256, toBytes(gameId), rsaSign, RSAPUBLIC)
155+ if (!(rsaSigValid))
156+ then throw("Invalid RSA signature")
157+ else {
158+ let rand = (toInt(sha256(rsaSign)) % 6)
159+ let result = if ((0 > rand))
160+ then (-1 * rand)
161+ else rand
162+ toString((result + 1))
163+ }
164+ }
165+
166+
167+func isPlayerWin (playerChoice,randChoise) = {
168+ let s = size(playerChoice)
169+ func check (a,x) = if (a)
170+ then true
171+ else if ((s >= x))
172+ then (take(drop(playerChoice, (x - 1)), 1) == randChoise)
173+ else false
174+
175+ let $list56265660 = [1, 2, 3, 4, 5]
176+ let $size56265660 = size($list56265660)
177+ let $acc056265660 = false
178+ if (($size56265660 == 0))
179+ then $acc056265660
180+ else {
181+ let $acc156265660 = check($acc056265660, $list56265660[0])
182+ if (($size56265660 == 1))
183+ then $acc156265660
184+ else {
185+ let $acc256265660 = check($acc156265660, $list56265660[1])
186+ if (($size56265660 == 2))
187+ then $acc256265660
188+ else {
189+ let $acc356265660 = check($acc256265660, $list56265660[2])
190+ if (($size56265660 == 3))
191+ then $acc356265660
192+ else {
193+ let $acc456265660 = check($acc356265660, $list56265660[3])
194+ if (($size56265660 == 4))
195+ then $acc456265660
196+ else {
197+ let $acc556265660 = check($acc456265660, $list56265660[4])
198+ if (($size56265660 == 5))
199+ then $acc556265660
200+ else {
201+ let $acc656265660 = check($acc556265660, $list56265660[5])
202+ throw("List size exceed 5")
203+ }
204+ }
205+ }
206+ }
207+ }
208+ }
209+ }
210+
211+
212+func formatGameData (gameState,playerChoice,playerPubKey58,startedHeight,winAmount,assetId,randOrEmpty) = (((((((((((gameState + "_") + playerChoice) + "_") + playerPubKey58) + "_") + toString(startedHeight)) + "_") + toString(winAmount)) + "_") + toString(assetId)) + (if ((randOrEmpty == ""))
213+ then ""
214+ else ("_" + randOrEmpty)))
215+
216+
217+func extractGameData (gameId) = split(match getString(this, gameId) {
218+ case str: String =>
219+ str
220+ case _ =>
221+ throw((("Game: " + gameId) + " not found."))
222+}, "_")
223+
224+
225+func winScriptSet (gameId,playerAddress,winAmount,assetId,newgameData,winByTimeout,decreasedReserves) = {
226+ let wSetCommonData = [decreasedReserves]
227+ let tSetCommonData = [ScriptTransfer(playerAddress, winAmount, ASSETS[assetId])]
228+ if (winByTimeout)
229+ then {
230+ let newgameDataAdjusted = (newgameData + "_TIMEOUT")
231+ let gameData = DataEntry(gameId, newgameDataAdjusted)
232+ ScriptResult(WriteSet(gameData :: wSetCommonData), TransferSet(tSetCommonData))
233+ }
234+ else {
235+ let gameData = DataEntry(gameId, newgameData)
236+ ScriptResult(WriteSet(gameData :: wSetCommonData), TransferSet(tSetCommonData))
237+ }
238+ }
239+
240+
241+@Callable(i)
242+func bet (playerChoice) = {
243+ let gameId = toBase58String(i.transactionId)
244+ if ((i.payment == unit))
245+ then throw("No payment")
246+ else if (isDefined(getString(this, gameId)))
247+ then throw((("Bet for: " + gameId) + " was already made."))
248+ else if (if ((i.feeAssetId != ASSETS[0]))
249+ then (i.feeAssetId != ASSETS[1])
250+ else false)
251+ then throw("Invalid fee asset")
252+ else {
253+ let p = extract(i.payment)
254+ if ((i.feeAssetId != p.assetId))
255+ then throw("Fee assetId and payment assetId should match")
256+ else {
257+ let assetId = validateAndGetAssetId(p.assetId)
258+ let commission = i.fee
259+ let winAmount = validateBetAndGetWinAmount((p.amount - i.fee), assetId, playerChoice)
260+ let playerPubKey58 = toBase58String(i.callerPublicKey)
261+ let gameData = formatGameData(STATESUBMITTED, playerChoice, playerPubKey58, height, winAmount, assetId, "")
262+ ScriptResult(WriteSet([DataEntry(RESERVATIONKEY[assetId], increaseReserveAmount(winAmount, assetId)), incrementInt(GAMESCOUNTERKEY), DataEntry(gameId, gameData)]), TransferSet([ScriptTransfer(SERVER, commission, p.assetId)]))
263+ }
264+ }
265+ }
266+
267+
268+
269+@Callable(i)
270+func withdraw (gameId,rsaSign) = {
271+ let gameData = extractGameData(gameId)
272+ let gameState = gameData[IdxGameState]
273+ let playerChoice = gameData[IdxPlayerChoice]
274+ let startedHeight = parseIntValue(gameData[IdxStartedHeight])
275+ let winAmount = parseIntValue(gameData[IdxWinAmount])
276+ let assetId = parseIntValue(gameData[IdxAssetId])
277+ let playerPubKey58 = gameData[IdxPlayerPubKey58]
278+ let playerAddress = addressFromPublicKey(fromBase58String(playerPubKey58))
279+ let winByTimeout = ((height - startedHeight) > RANDORACLETIMEFRAME)
280+ let decreasedReserves = decreaseReservedAmount(gameId, assetId, winAmount)
281+ if ((gameState != STATESUBMITTED))
282+ then throw("Invalid game state for passed gameId")
283+ else if (winByTimeout)
284+ then {
285+ let randChoise = take(playerChoice, 1)
286+ let newgameData = formatGameData(STATEWON, playerChoice, playerPubKey58, startedHeight, winAmount, assetId, randChoise)
287+ winScriptSet(gameId, playerAddress, winAmount, assetId, newgameData, winByTimeout, decreasedReserves)
288+ }
289+ else {
290+ let randChoise = generateRandChoise(gameId, rsaSign)
291+ if ((i.caller != SERVER))
292+ then throw("Regular withdraw can be done by server only")
293+ else if (isPlayerWin(playerChoice, randChoise))
294+ then {
295+ let newgameData = formatGameData(STATEWON, playerChoice, playerPubKey58, startedHeight, winAmount, assetId, randChoise)
296+ winScriptSet(gameId, playerAddress, winAmount, assetId, newgameData, winByTimeout, decreasedReserves)
297+ }
298+ else {
299+ let newgameData = formatGameData(STATELOST, playerChoice, playerPubKey58, startedHeight, winAmount, assetId, randChoise)
300+ WriteSet([DataEntry(gameId, newgameData), decreasedReserves])
301+ }
302+ }
303+ }
304+
305+
306+@Verifier(tx)
307+func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
308+ then match tx {
309+ case ttx: TransferTransaction =>
310+ let assetId = validateAndGetAssetId(ttx.assetId)
311+ ((assetBalance(this, ttx.assetId) - ttx.amount) >= getIntOr(RESERVATIONKEY[assetId], 0))
312+ case stx: SetScriptTransaction =>
313+ if ((getIntOr(RESERVATIONKEY[0], 0) == 0))
314+ then (getIntOr(RESERVATIONKEY[1], 0) == 0)
315+ else false
316+ case _ =>
317+ false
318+ }
319+ else false
320+

github/deemru/w8io/3ef1775 
57.69 ms