tx · 4vYSwQ6t3C6VNxFF27RjwG7Pn3oJp4KeH4e9Ag3vDGQQ

3Mr39Aof6gVSVXnDWWJmgMSPzCEhv523SEY:  -0.01500000 Waves

2020.06.11 11:02 [1038484] smart account 3Mr39Aof6gVSVXnDWWJmgMSPzCEhv523SEY > SELF 0.00000000 Waves

{ "type": 13, "id": "4vYSwQ6t3C6VNxFF27RjwG7Pn3oJp4KeH4e9Ag3vDGQQ", "fee": 1500000, "feeAssetId": null, "timestamp": 1591862567356, "version": 1, "sender": "3Mr39Aof6gVSVXnDWWJmgMSPzCEhv523SEY", "senderPublicKey": "6UeFzLacRirBQkhXpJrazf5GiahwYtfDxfdWqNTFEFTB", "proofs": [ "53GvGgCg9zc96Jw5XhkvjY3pnEEoRiZE39Mdyu9Y78BKxcNrLcCa7a32nkFAxCPbfQkzhjhzhqZBuCKUxzF6G1kg" ], "script": "base64:AAIDAAAAAAAAAA0IARIDCgEIEgQKAggCAAAALAAAAAAGV0FWRVNEAAAAAAAF9eEAAAAAAAVVU0RORAAAAAAAAA9CQAAAAAAIREVDSU1BTFMJAARMAAAAAgUAAAAGV0FWRVNECQAETAAAAAIFAAAABVVTRE5EBQAAAANuaWwAAAAABkFTU0VUUwkABEwAAAACBQAAAAR1bml0CQAETAAAAAIJAAJZAAAAAQIAAAAsMjVGRXFFalJrcUs2eUNraVQ3THo2U0FZejdnVUZDdHhmQ0NobnJWRkQ1QVQFAAAAA25pbAAAAAAJUlNBUFVCTElDCQACWwAAAAECAAABj2Jhc2U2NDpNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQW1wdVhjSS9vNHBJQjV5d3Y5RE9PR2FwVEJVd1JWbE0vNitINmhGZWxPWHRrcndZL1lJdG1QeEVEcHo3ckFlclFQUWU5dERQRWFBdi9HbmxFenR5Yk9GWGd1OUR6RGU4WW9NUkQxdmFrZ29BY29nbWJZNThRRDZLTWo1SGtvVmoveVROSWM5c3pqNXFoSWxyQWRtYjNLTEw2aFFVN3k4K0pqNjlCV1ZQc2FRZ2tzcFNkZVl0YjF0SFFjN3Q5NW43T1o1NnIyQTdHMytiUWY2blNNa1BrQWhJckVwYkNtNThvaUdCY3pkVGQvTHFGU1ZvdFpzYkw3WWg2U0hMZm5IZUQrUWdjZkpybmFtOE9ITUdKRUpUUlhqSUxlSEdqbFJDUDhvVnBpb0hyeTFTMnhQeDVzVnpJbTJNTStDelllbkFHbG8wajI2YXRCaGlVTG9UdWx3RDNwUUlEQVFBQgAAAAAGU0VSVkVSCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAECAAAAIzNOQ2lHMjhMbVd5VGlnV0cxM0U1UW52ZEhCc1pGWVhTUzJqAAAAABNSQU5ET1JBQ0xFVElNRUZSQU1FAAAAAAAAABDgAAAAAARCRVQxAAAAAAAAAAABAAAAAARCRVQyAAAAAAAAAAACAAAAAARCRVQ0AAAAAAAAAAAEAAAAAARCRVQ4AAAAAAAAAAAIAAAAAAVCRVQxNAAAAAAAAAAADgAAAAAIUkFURU1VTFQAAAAAAAAAJxAAAAAABVJBVEUxAAAA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QW1vdW50CQEAAAAadmFsaWRhdGVCZXRBbmRHZXRXaW5BbW91bnQAAAADCQAAZQAAAAIIBQAAAAFwAAAABmFtb3VudAgFAAAAAWkAAAADZmVlBQAAAAdhc3NldElkBQAAAAxwbGF5ZXJDaG9pY2UEAAAADnBsYXllclB1YktleTU4CQACWAAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAAIZ2FtZURhdGEJAQAAAA5mb3JtYXRHYW1lRGF0YQAAAAcFAAAADlNUQVRFU1VCTUlUVEVEBQAAAAxwbGF5ZXJDaG9pY2UFAAAADnBsYXllclB1YktleTU4BQAAAAZoZWlnaHQFAAAACXdpbkFtb3VudAUAAAAHYXNzZXRJZAIAAAAACQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAAZEAAAACBQAAAA5SRVNFUlZBVElPTktFWQUAAAAHYXNzZXRJZAkBAAAAFWluY3JlYXNlUmVzZXJ2ZUFtb3VudAAAAAIFAAAACXdpbkFtb3VudAUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAAMaW5jcmVtZW50SW50AAAAAQUAAAAPR0FNRVNDT1VOVEVSS0VZCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAZnYW1lSWQFAAAACGdhbWVEYXRhBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAGU0VSVkVSBQAAAApjb21taXNzaW9uCAUAAAABcAAAAAdhc3NldElkBQAAAANuaWwAAAABaQEAAAAId2l0aGRyYXcAAAACAAAABmdhbWVJZAAAAAdyc2FTaWduBAAAAAhnYW1lRGF0YQkBAAAAD2V4dHJhY3RHYW1lRGF0YQAAAAEFAAAABmdhbWVJZAQAAAAJZ2FtZVN0YXRlCQABkQAAAAIFAAAACGdhbWVEYXRhBQAAAAxJZHhHYW1lU3RhdGUEAAAADHBsYXllckNob2ljZQkAAZEAAAACBQAAAAhnYW1lRGF0YQUAAAAPSWR4UGxheWVyQ2hvaWNlBAAAAA1zdGFydGVkSGVpZ2h0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIZ2FtZURhdGEFAAAAEElkeFN0YXJ0ZWRIZWlnaHQEAAAACXdpbkFtb3VudAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGdhbWVEYXRhBQAAAAxJZHhXaW5BbW91bnQEAAAAB2Fzc2V0SWQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhnYW1lRGF0YQUAAAAKSWR4QXNzZXRJZAQAAAAOcGxheWVyUHViS2V5NTgJAAGRAAAAAgUAAAAIZ2FtZURhdGEFAAAAEUlkeFBsYXllclB1YktleTU4BAAAAA1wbGF5ZXJBZGRyZXNzCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCQACWQAAAAEFAAAADnBsYXllclB1YktleTU4BAAAAAx3aW5CeVRpbWVvdXQJAABmAAAAAgkAAGUAAAACBQAAAAZoZWlnaHQFAAAADXN0YXJ0ZWRIZWlnaHQFAAAAE1JBTkRPUkFDTEVUSU1FRlJBTUUEAAAAEWRlY3JlYXNlZFJlc2VydmVzCQEAAAAWZGVjcmVhc2VSZXNlcnZlZEFtb3VudAAAAAMFAAAABmdhbWVJZAUAAAAHYXNzZXRJZAUAAAAJd2luQW1vdW50AwkBAAAAAiE9AAAAAgUAAAAJZ2FtZVN0YXRlBQAAAA5TVEFURVNVQk1JVFRFRAkAAAIAAAABAgAAACRJbnZhbGlkIGdhbWUgc3RhdGUgZm9yIHBhc3NlZCBnYW1lSWQDBQAAAAx3aW5CeVRpbWVvdXQEAAAACnJhbmRDaG9pc2UJAAEvAAAAAgUAAAAMcGxheWVyQ2hvaWNlAAAAAAAAAAABBAAAAAtuZXdnYW1lRGF0YQkBAAAADmZvcm1hdEdhbWVEYXRhAAAABwUAAAAIU1RBVEVXT04FAAAADHBsYXllckNob2ljZQUAAAAOcGxheWVyUHViS2V5NTgFAAAADXN0YXJ0ZWRIZWlnaHQFAAAACXdpbkFtb3VudAUAAAAHYXNzZXRJZAUAAAAKcmFuZENob2lzZQkBAAAADHdpblNjcmlwdFNldAAAAAcFAAAABmdhbWVJZAUAAAANcGxheWVyQWRkcmVzcwUAAAAJd2luQW1vdW50BQAAAAdhc3NldElkBQAAAAtuZXdnYW1lRGF0YQUAAAAMd2luQnlUaW1lb3V0BQAAABFkZWNyZWFzZWRSZXNlcnZlcwQAAAAKcmFuZENob2lzZQkBAAAAEmdlbmVyYXRlUmFuZENob2lzZQAAAAIFAAAABmdhbWVJZAUAAAAHcnNhU2lnbgMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAGU0VSVkVSCQAAAgAAAAECAAAAK1JlZ3VsYXIgd2l0aGRyYXcgY2FuIGJlIGRvbmUgYnkgc2VydmVyIG9ubHkDCQEAAAALaXNQbGF5ZXJXaW4AAAACBQAAAAxwbGF5ZXJDaG9pY2UFAAAACnJhbmRDaG9pc2UEAAAAC25ld2dhbWVEYXRhCQEAAAAOZm9ybWF0R2FtZURhdGEAAAAHBQAAAAhTVEFURVdPTgUAAAAMcGxheWVyQ2hvaWNlBQAAAA5wbGF5ZXJQdWJLZXk1OAUAAAANc3RhcnRlZEhlaWdodAUAAAAJd2luQW1vdW50BQAAAAdhc3NldElkBQAAAApyYW5kQ2hvaXNlCQEAAAAMd2luU2NyaXB0U2V0AAAABwUAAAAGZ2FtZUlkBQAAAA1wbGF5ZXJBZGRyZXNzBQAAAAl3aW5BbW91bnQFAAAAB2Fzc2V0SWQFAAAAC25ld2dhbWVEYXRhBQAAAAx3aW5CeVRpbWVvdXQFAAAAEWRlY3JlYXNlZFJlc2VydmVzBAAAAAtuZXdnYW1lRGF0YQkBAAAADmZvcm1hdEdhbWVEYXRhAAAABwUAAAAJU1RBVEVMT1NUBQAAAAxwbGF5ZXJDaG9pY2UFAAAADnBsYXllclB1YktleTU4BQAAAA1zdGFydGVkSGVpZ2h0BQAAAAl3aW5BbW91bnQFAAAAB2Fzc2V0SWQFAAAACnJhbmRDaG9pc2UJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAABmdhbWVJZAUAAAALbmV3Z2FtZURhdGEJAARMAAAAAgUAAAARZGVjcmVhc2VkUmVzZXJ2ZXMFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAE1RyYW5zZmVyVHJhbnNhY3Rpb24EAAAAA3R0eAUAAAAHJG1hdGNoMAQAAAAHYXNzZXRJZAkBAAAAFXZhbGlkYXRlQW5kR2V0QXNzZXRJZAAAAAEIBQAAAAN0dHgAAAAHYXNzZXRJZAkAAGcAAAACCQAAZQAAAAIJAAPrAAAAAgUAAAAEdGhpcwgFAAAAA3R0eAAAAAdhc3NldElkCAUAAAADdHR4AAAABmFtb3VudAkBAAAACGdldEludE9yAAAAAgkAAZEAAAACBQAAAA5SRVNFUlZBVElPTktFWQUAAAAHYXNzZXRJZAAAAAAAAAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAAAAA3N0eAUAAAAHJG1hdGNoMAMJAAAAAAAAAgkBAAAACGdldEludE9yAAAAAgkAAZEAAAACBQAAAA5SRVNFUlZBVElPTktFWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAACCQEAAAAIZ2V0SW50T3IAAAACCQABkQAAAAIFAAAADlJFU0VSVkFUSU9OS0VZAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAABwcHnEsMbA==", "chainId": 84, "height": 1038484, "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: " + toString(bet)))
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 $list56455679 = [1, 2, 3, 4, 5]
176+ let $size56455679 = size($list56455679)
177+ let $acc056455679 = false
178+ if (($size56455679 == 0))
179+ then $acc056455679
180+ else {
181+ let $acc156455679 = check($acc056455679, $list56455679[0])
182+ if (($size56455679 == 1))
183+ then $acc156455679
184+ else {
185+ let $acc256455679 = check($acc156455679, $list56455679[1])
186+ if (($size56455679 == 2))
187+ then $acc256455679
188+ else {
189+ let $acc356455679 = check($acc256455679, $list56455679[2])
190+ if (($size56455679 == 3))
191+ then $acc356455679
192+ else {
193+ let $acc456455679 = check($acc356455679, $list56455679[3])
194+ if (($size56455679 == 4))
195+ then $acc456455679
196+ else {
197+ let $acc556455679 = check($acc456455679, $list56455679[4])
198+ if (($size56455679 == 5))
199+ then $acc556455679
200+ else {
201+ let $acc656455679 = check($acc556455679, $list56455679[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/169f3d6 
21.44 ms