tx · HUzTd2sKfkeSpzUs4jR3nKiHCE7yT11yfAqHvdVq3MdG

3MsGBnTzBhrNe6w1KpLYPkzdDdxWudm4U89:  -0.01400000 Waves

2019.08.23 19:21 [644012] smart account 3MsGBnTzBhrNe6w1KpLYPkzdDdxWudm4U89 > SELF 0.00000000 Waves

{ "type": 13, "id": "HUzTd2sKfkeSpzUs4jR3nKiHCE7yT11yfAqHvdVq3MdG", "fee": 1400000, "feeAssetId": null, "timestamp": 1566577244805, "version": 1, "sender": "3MsGBnTzBhrNe6w1KpLYPkzdDdxWudm4U89", "senderPublicKey": "FgbqvGasMMrXxbhwrsgEiCgJLjXPjgn8kHxsZiVmLrkb", "proofs": [ "6617Cnu1pPUF8dwqxrV8D5uHrN36uBUV19y9tkYwT8cNZenNbRrEUuKYXx2gcbC625Q8Bf2UXn9V8YY4dT9t3Mtb" ], "script": "base64:AAIDAAAAAAAAAAAAAAAsAAAAAAlSU0FQVUJMSUMJAAJbAAAAAQIAAAGPYmFzZTY0Ok1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBbGVtcjk1SjFqWlVzN2NKbXJtbWxONHpvN1lWc0JKekllSmRrOExERkdoVUtTSTZ5ZnMyMFp5SmUyMSs2R0p3Tm5LVVUxVXlvYzE3d1NXTUtrclowTU12WUUrWjVBaWlqdkJLNHNTSjNJZ0dqZFU4L05oSThDQkR1MEYreFJNOXEzVEIzTExiRHk1c0JkdWRZZkhmc1VPYytNVHZBRDY5bjI3ZGIyUmg4K3laUU10dWJrdVRRTnA4OXNwaEhRYUxHeVFGYU5sSy9OYTNsRng2b21xemFhMWdqb3BsVXI2cnZZS2dmQUlDVUIzelZtSlNoaUVpN3c3UjBoV2xOUkQzcWNaakNVT05TcEZvNFdiemtuR09henc4NEIrSU1JRm5JcFhXelFMOFJYMHZOY2ZzQnZMRGZNNmsyWmFjcXd5TUthTExxaWdkQmlHZEo3VyswbE9TdE9RSURBUUFCAAAAAAZTRVJWRVIJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQIAAAAjM05BUG9VQndMN2phUFczbmdWRjNkVDViNjhxNGVhSEFpaUMAAAAAE1JBTkRPUkFDTEVUSU1FRlJBTUUAAAAAAAAAEOAAAAAAB1dBVkVMRVQJAABoAAAAAgkAAGgAAAACAAAAAAAAAABkAAAAAAAAAAPoAAAAAAAAAAPoAAAAAApDT01NSVNTSU9OCQAAaQAAAAIJAABoAAAAAgAAAAAAAAAACQUAAAAHV0FWRUxFVAAAAAAAAAAD6AAAAAAEQkVUMQkAAGgAAAACAAAAAAAAAAABBQAAAAdXQVZFTEVUAAAAAARCRVQyCQAAaAAAAAIAAAAAAAAAAAIFAAAAB1dBVkVMRVQAAAAABEJFVDQJAABoAAAAAgAAAAAAAAAABAUAAAAHV0FWRUxFVAAAAAAEQkVUOAkAAGgAAAACAAAAAAAAAAAIBQAAAAdXQVZFTEVUAAAAAAVCRVQxNAkAAGgAAAACAAAAAAAAAAAOBQAAAAdXQVZFTEVUAAAAAAhSQVRFTVVMVAAAAAAAAAAnEAAAAAAFUkFU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aWwEAAAADnRTZXRDb21tb25EYXRhCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADXBsYXllckFkZHJlc3MFAAAABndpbkFtdAUAAAAEdW5pdAUAAAADbmlsAwUAAAAMd2luQnlUaW1lb3V0BAAAABZuZXdHYW1lRGF0YVN0ckFkanVzdGVkCQABLAAAAAIJAAEsAAAAAgUAAAAObmV3R2FtZURhdGFTdHICAAAAAV8JAQAAABNGb3JtYXRHYW1lRGF0YVBhcmFtAAAAAQIAAAAHVElNRU9VVAQAAAAIZ2FtZURhdGEJAQAAAAlEYXRhRW50cnkAAAACBQAAAAZnYW1lSWQFAAAAFm5ld0dhbWVEYXRhU3RyQWRqdXN0ZWQJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIFAAAACGdhbWVEYXRhBQAAAA53U2V0Q29tbW9uRGF0YQkBAAAAC1RyYW5zZmVyU2V0AAAAAQUAAAAOdFNldENvbW1vbkRhdGEEAAAACGdhbWVEYXRhCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAGZ2FtZUlkBQAAAA5uZXdHYW1lRGF0YVN0cgkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgUAAAAIZ2FtZURhdGEFAAAADndTZXRDb21tb25EYXRhCQEAAAALVHJhbnNmZXJTZXQAAAABBQAAAA50U2V0Q29tbW9uRGF0YQAAAAIAAAABaQEAAAADYmV0AAAAAQAAAAxwbGF5ZXJDaG9pY2UEAAAAAWEJAAJaAAAAAQkAAZsAAAABAgAAACMzTXNENUxXTkptUWtrV3BqM1J0YWVSVnJLR0xnb0NFN2twQgkAAAIAAAABBQAAAAFhAAAAAWkBAAAACHdpdGhkcmF3AAAAAgAAAAZnYW1lSWQAAAAHcnNhU2lnbgQAAAAMZ2FtZURhdGFMaXN0CQEAAAATRXh0cmFjdEdhbWVEYXRhTGlzdAAAAAEFAAAABmdhbWVJZAQAAAAJZ2FtZVN0YXRlCQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAAMSWR4R2FtZVN0YXRlBAAAAAxwbGF5ZXJDaG9pY2UJAAGRAAAAAgUAAAAMZ2FtZURhdGFMaXN0BQAAAA9JZHhQbGF5ZXJDaG9pY2UEAAAADXN0YXJ0ZWRIZWlnaHQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAAEElkeFN0YXJ0ZWRIZWlnaHQEAAAABndpbkFtdAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAAJSWR4V2luQW10BAAAAA5wbGF5ZXJQdWJLZXk1OAkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAAEUlkeFBsYXllclB1YktleTU4BAAAAA1wbGF5ZXJBZGRyZXNzCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCQACWQAAAAEFAAAADnBsYXllclB1YktleTU4BAAAAAx3aW5CeVRpbWVvdXQJAABmAAAAAgkAAGUAAAACBQAAAAZoZWlnaHQFAAAADXN0YXJ0ZWRIZWlnaHQFAAAAE1JBTkRPUkFDTEVUSU1FRlJBTUUEAAAAEWRlY3JlYXNlZFJlc2VydmVzCQEAAAATRGVjcmVhc2VSZXNlcnZlZEFtdAAAAAIFAAAABmdhbWVJZAUAAAAGd2luQW10AwkBAAAAAiE9AAAAAgUAAAAJZ2FtZVN0YXRlBQAAAA5TVEFURVNVQk1JVFRFRAkAAAIAAAABAgAAACRJbnZhbGlkIGdhbWUgc3RhdGUgZm9yIHBhc3NlZCBnYW1lSWQDBQAAAAx3aW5CeVRpbWVvdXQEAAAAB3JhbmRTdHIJAQAAAAlnZXRXaW5TdHIAAAABBQAAAAxwbGF5ZXJDaG9pY2UEAAAADm5ld0dhbWVEYXRhU3RyCQEAAAARRm9ybWF0R2FtZURhdGFTdHIAAAAGBQAAAAhTVEFURVdPTgUAAAAMcGxheWVyQ2hvaWNlBQAAAA5wbGF5ZXJQdWJLZXk1OAUAAAANc3RhcnRlZEhlaWdodAUAAAAGd2luQW10BQAAAAdyYW5kU3RyCQEAAAAMV2luU2NyaXB0U2V0AAAABgUAAAAGZ2FtZUlkBQAAAA1wbGF5ZXJBZGRyZXNzBQAAAAZ3aW5BbXQFAAAADm5ld0dhbWVEYXRhU3RyBQAAAAx3aW5CeVRpbWVvdXQFAAAAEWRlY3JlYXNlZFJlc2VydmVzBAAAAAdyYW5kSW50CQEAAAAPR2VuZXJhdGVSYW5kSW50AAAAAgUAAAAGZ2FtZUlkBQAAAAdyc2FTaWduBAAAAAdyYW5kU3RyCQEAAAAJUmFuZFRvU3RyAAAAAQUAAAAHcmFuZEludAMJAQAAAAtJc1BsYXllcldpbgAAAAIFAAAADHBsYXllckNob2ljZQUAAAAHcmFuZFN0cgQAAAAObmV3R2FtZURhdGFTdHIJAQAAABFGb3JtYXRHYW1lRGF0YVN0cgAAAAYFAAAACFNUQVRFV09OBQAAAAxwbGF5ZXJDaG9pY2UFAAAADnBsYXllclB1YktleTU4BQAAAA1zdGFydGVkSGVpZ2h0BQAAAAZ3aW5BbXQFAAAAB3JhbmRTdHIJAQAAAAxXaW5TY3JpcHRTZXQAAAAGBQAAAAZnYW1lSWQFAAAADXBsYXllckFkZHJlc3MFAAAABndpbkFtdAUAAAAObmV3R2FtZURhdGFTdHIFAAAADHdpbkJ5VGltZW91dAUAAAARZGVjcmVhc2VkUmVzZXJ2ZXMEAAAADm5ld0dhbWVEYXRhU3RyCQEAAAARRm9ybWF0R2FtZURhdGFTdHIAAAAGBQAAAAlTVEFURUxPU1QFAAAADHBsYXllckNob2ljZQUAAAAOcGxheWVyUHViS2V5NTgFAAAADXN0YXJ0ZWRIZWlnaHQFAAAABndpbkFtdAUAAAAHcmFuZFN0cgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAGZ2FtZUlkBQAAAA5uZXdHYW1lRGF0YVN0cgkABEwAAAACBQAAABFkZWNyZWFzZWRSZXNlcnZlcwUAAAADbmlsAAAAADEcjqM=", "chainId": 84, "height": 644012, "spentComplexity": 0 } View: original | compacted Prev: 3XRyBppf5GhKfMJqnVL9ZVV5EV4uaDtBAz17kmyGkBoE Next: 5YSBJwPNrGjkoidw5pZCqFiqHFad6rdjAyqSSYyqGKWF Diff:
OldNewDifferences
281281
282282 @Callable(i)
283283 func bet (playerChoice) = {
284- let newGameNum = IncrementGameNum()
285- let gameId = toBase58String(i.transactionId)
286- let pmt = extract(i.payment)
287- let betNotInWaves = isDefined(pmt.assetId)
288- let feeNotInWaves = isDefined(pmt.assetId)
289- let winAmt = ValidateBetAndDefineWinAmt(pmt.amount, playerChoice)
290- let txIdUsed = isDefined(getString(this, gameId))
291- if (betNotInWaves)
292- then throw("Bet amount must be in Waves")
293- else if (feeNotInWaves)
294- then throw("Transaction's fee must be in Waves")
295- else if (txIdUsed)
296- then throw("Passed txId had been used before. Game aborted.")
297- else {
298- let playerPubKey58 = toBase58String(i.callerPublicKey)
299- let gameDataStr = FormatGameDataStr(STATESUBMITTED, playerChoice, playerPubKey58, height, winAmt, "")
300- let readableGameData = ((((((((STATESUBMITTED + "_") + playerChoice) + "_") + playerPubKey58) + "_") + toString(height)) + "_") + toString(winAmt))
301- let serverTransfer = [ScriptTransfer(SERVER, COMMISSION, unit)]
302- let betData = [DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]
303- ScriptResult(WriteSet(betData), TransferSet(serverTransfer))
304- }
284+ let a = toBase64String(toBytes("3MsD5LWNJmQkkWpj3RtaeRVrKGLgoCE7kpB"))
285+ throw(a)
305286 }
306287
307288
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let RSAPUBLIC = fromBase64String("base64:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlemr95J1jZUs7cJmrmmlN4zo7YVsBJzIeJdk8LDFGhUKSI6yfs20ZyJe21+6GJwNnKUU1Uyoc17wSWMKkrZ0MMvYE+Z5AiijvBK4sSJ3IgGjdU8/NhI8CBDu0F+xRM9q3TB3LLbDy5sBdudYfHfsUOc+MTvAD69n27db2Rh8+yZQMtubkuTQNp89sphHQaLGyQFaNlK/Na3lFx6omqzaa1gjoplUr6rvYKgfAICUB3zVmJShiEi7w7R0hWlNRD3qcZjCUONSpFo4WbzknGOazw84B+IMIFnIpXWzQL8RX0vNcfsBvLDfM6k2ZacqwyMKaLLqigdBiGdJ7W+0lOStOQIDAQAB")
55
66 let SERVER = addressFromStringValue("3NAPoUBwL7jaPW3ngVF3dT5b68q4eaHAiiC")
77
88 let RANDORACLETIMEFRAME = 4320
99
1010 let WAVELET = ((100 * 1000) * 1000)
1111
1212 let COMMISSION = ((9 * WAVELET) / 1000)
1313
1414 let BET1 = (1 * WAVELET)
1515
1616 let BET2 = (2 * WAVELET)
1717
1818 let BET4 = (4 * WAVELET)
1919
2020 let BET8 = (8 * WAVELET)
2121
2222 let BET14 = (14 * WAVELET)
2323
2424 let RATEMULT = 10000
2525
2626 let RATE1 = 39655
2727
2828 let RATE2 = 24600
2929
3030 let RATE3 = 19000
3131
3232 let RATE4 = 14200
3333
3434 let RATE5 = 11400
3535
3636 let IdxGameState = 0
3737
3838 let IdxPlayerChoice = 1
3939
4040 let IdxPlayerPubKey58 = 2
4141
4242 let IdxStartedHeight = 3
4343
4444 let IdxWinAmt = 4
4545
4646 let IdxRandOrEmpty = 5
4747
4848 let GAMESCOUNTERKEY = "$GAME_NUM"
4949
5050 let RESERVATIONKEY = "$RESERVED_AMOUNT"
5151
5252 let STATESUBMITTED = "SUBMITTED"
5353
5454 let STATEWON = "WON"
5555
5656 let STATELOST = "LOST"
5757
5858 func getAnswer (playerChoice) = BET14
5959
6060
6161 func GenerateRandInt (gameId,rsaSign) = {
6262 let rsaSigValid = rsaVerify(SHA256, toBytes(gameId), rsaSign, RSAPUBLIC)
6363 if (rsaSigValid)
6464 then {
6565 let rand = (toInt(sha256(rsaSign)) % 6)
6666 if ((0 > rand))
6767 then ((-1 * rand) + 1)
6868 else (rand + 1)
6969 }
7070 else throw("Invalid RSA signature")
7171 }
7272
7373
7474 func RemoveUnderscoreIfPresent (remaining) = if ((size(remaining) > 0))
7575 then drop(remaining, 1)
7676 else remaining
7777
7878
7979 func ParseNextAttribute (remaining) = {
8080 let s = size(remaining)
8181 if ((s > 0))
8282 then {
8383 let nn = parseIntValue(take(remaining, 2))
8484 let v = take(drop(remaining, 2), nn)
8585 let tmpRemaining = drop(remaining, (nn + 2))
8686 let remainingState = RemoveUnderscoreIfPresent(tmpRemaining)
8787 [v, remainingState]
8888 }
8989 else throw("Empty string was passed into parseNextAttribute func")
9090 }
9191
9292
9393 func ParseGameRawDataStr (rawStateStr) = {
9494 let gameState = ParseNextAttribute(rawStateStr)
9595 let playerChoice = ParseNextAttribute(gameState[1])
9696 let playerPubKey58 = ParseNextAttribute(playerChoice[1])
9797 let startedHeight = ParseNextAttribute(playerPubKey58[1])
9898 let winAmt = ParseNextAttribute(startedHeight[1])
9999 [gameState[0], playerChoice[0], playerPubKey58[0], startedHeight[0], winAmt[0]]
100100 }
101101
102102
103103 func ExtractGameDataList (gameId) = {
104104 let rawDataStr = match getString(this, gameId) {
105105 case str: String =>
106106 str
107107 case _ =>
108108 throw(("Couldn't find game by " + gameId))
109109 }
110110 ParseGameRawDataStr(rawDataStr)
111111 }
112112
113113
114114 func ExtractReservedAmt () = match getInteger(this, RESERVATIONKEY) {
115115 case a: Int =>
116116 a
117117 case _ =>
118118 0
119119 }
120120
121121
122122 func ValidateAndIncreaseReservedAmt (winAmt) = {
123123 let newReservedAmount = (ExtractReservedAmt() + winAmt)
124124 let balance = wavesBalance(this)
125125 if ((newReservedAmount > balance))
126126 then throw("Insufficient funds on Russian Roulette account. Transaction was rejected for your safety.")
127127 else newReservedAmount
128128 }
129129
130130
131131 func IncrementGameNum () = {
132132 let gameNum = match getInteger(this, GAMESCOUNTERKEY) {
133133 case num: Int =>
134134 num
135135 case _ =>
136136 0
137137 }
138138 (gameNum + 1)
139139 }
140140
141141
142142 func DecreaseReservedAmt (gameId,winAmt) = {
143143 let newReservedAmount = (ExtractReservedAmt() - winAmt)
144144 if ((0 > newReservedAmount))
145145 then throw("Invalid Russian Roulette account state - reserved amount is less than 0")
146146 else DataEntry(RESERVATIONKEY, newReservedAmount)
147147 }
148148
149149
150150 func FormatGameDataParam (p) = {
151151 let s = size(p)
152152 if ((s == 0))
153153 then throw("Parameter size must be greater then 0")
154154 else if ((s > 99))
155155 then throw("Parameter size must be less then 100")
156156 else if ((10 > s))
157157 then (("0" + toString(s)) + p)
158158 else (toString(s) + p)
159159 }
160160
161161
162162 func FormatGameDataStr (gameState,playerChoice,playerPubKey58,startedHeight,winAmt,randOrEmpty) = {
163163 let fullStateStr = ((((((((FormatGameDataParam(gameState) + "_") + FormatGameDataParam(playerChoice)) + "_") + FormatGameDataParam(playerPubKey58)) + "_") + FormatGameDataParam(toString(startedHeight))) + "_") + FormatGameDataParam(toString(winAmt)))
164164 if ((randOrEmpty == ""))
165165 then fullStateStr
166166 else ((fullStateStr + "_") + FormatGameDataParam(randOrEmpty))
167167 }
168168
169169
170170 func RandToStr (r) = if ((r == 1))
171171 then "1"
172172 else if ((r == 2))
173173 then "2"
174174 else if ((r == 3))
175175 then "3"
176176 else if ((r == 4))
177177 then "4"
178178 else if ((r == 5))
179179 then "5"
180180 else if ((r == 6))
181181 then "6"
182182 else throw(("Unsupported r parameter passed: expected=[1,...,6] actual=" + toString(r)))
183183
184184
185185 func ValidateBetAndDefineWinAmt (betAmt,playerChoice) = {
186186 let betAmtValid = if (if (if (if (if ((betAmt == (BET1 + COMMISSION)))
187187 then true
188188 else (betAmt == (BET2 + COMMISSION)))
189189 then true
190190 else (betAmt == (BET4 + COMMISSION)))
191191 then true
192192 else (betAmt == (BET8 + COMMISSION)))
193193 then true
194194 else (betAmt == (BET14 + COMMISSION)))
195195 then true
196196 else false
197197 if (betAmtValid)
198198 then {
199199 let bulletsCount = size(playerChoice)
200200 let bet = (betAmt - COMMISSION)
201201 let b1 = parseIntValue(take(playerChoice, 1))
202202 let forB2 = drop(playerChoice, 1)
203203 let b2 = parseIntValue(take(forB2, 1))
204204 let forB3 = drop(forB2, 1)
205205 let b3 = parseIntValue(take(forB3, 1))
206206 let forB4 = drop(forB3, 1)
207207 let b4 = parseIntValue(take(forB4, 1))
208208 let forB5 = drop(forB4, 1)
209209 let b5 = parseIntValue(take(forB5, 1))
210210 let forB6 = drop(forB5, 1)
211211 let b6 = parseIntValue(take(forB6, 1))
212212 let activeBullets = (((((b1 + b2) + b3) + b4) + b5) + b6)
213213 if ((activeBullets == 5))
214214 then ((bet * RATE1) / RATEMULT)
215215 else if ((activeBullets == 4))
216216 then ((bet * RATE2) / RATEMULT)
217217 else if ((activeBullets == 3))
218218 then ((bet * RATE3) / RATEMULT)
219219 else if ((activeBullets == 2))
220220 then ((bet * RATE4) / RATEMULT)
221221 else if ((activeBullets == 1))
222222 then ((bet * RATE5) / RATEMULT)
223223 else throw(("Invalid player's choice, active bullets = " + toString(activeBullets)))
224224 }
225225 else throw("Bet amount is not in range")
226226 }
227227
228228
229229 func getWinStr (playerChoice) = {
230230 let b1 = parseIntValue(take(playerChoice, 1))
231231 let forB2 = drop(playerChoice, 1)
232232 let b2 = parseIntValue(take(forB2, 1))
233233 let forB3 = drop(playerChoice, 1)
234234 let b3 = parseIntValue(take(forB3, 1))
235235 let forB4 = drop(playerChoice, 1)
236236 let b4 = parseIntValue(take(forB4, 1))
237237 let forB5 = drop(playerChoice, 1)
238238 let b5 = parseIntValue(take(forB5, 1))
239239 let forB6 = drop(playerChoice, 1)
240240 let b6 = parseIntValue(take(forB6, 1))
241241 if ((b1 == 0))
242242 then "1"
243243 else if ((b2 == 0))
244244 then "2"
245245 else if ((b3 == 0))
246246 then "3"
247247 else if ((b4 == 0))
248248 then "4"
249249 else if ((b5 == 0))
250250 then "5"
251251 else if ((b6 == 0))
252252 then "6"
253253 else throw("Bet amount is not in range")
254254 }
255255
256256
257257 func IsPlayerWin (playerChoice,randStr) = {
258258 let randInt = parseIntValue(randStr)
259259 let choiceArray = split(playerChoice, "")
260260 if ((choiceArray[(randInt - 1)] == "0"))
261261 then true
262262 else false
263263 }
264264
265265
266266 func WinScriptSet (gameId,playerAddress,winAmt,newGameDataStr,winByTimeout,decreasedReserves) = {
267267 let wSetCommonData = [decreasedReserves]
268268 let tSetCommonData = [ScriptTransfer(playerAddress, winAmt, unit)]
269269 if (winByTimeout)
270270 then {
271271 let newGameDataStrAdjusted = ((newGameDataStr + "_") + FormatGameDataParam("TIMEOUT"))
272272 let gameData = DataEntry(gameId, newGameDataStrAdjusted)
273273 ScriptResult(WriteSet(gameData :: wSetCommonData), TransferSet(tSetCommonData))
274274 }
275275 else {
276276 let gameData = DataEntry(gameId, newGameDataStr)
277277 ScriptResult(WriteSet(gameData :: wSetCommonData), TransferSet(tSetCommonData))
278278 }
279279 }
280280
281281
282282 @Callable(i)
283283 func bet (playerChoice) = {
284- let newGameNum = IncrementGameNum()
285- let gameId = toBase58String(i.transactionId)
286- let pmt = extract(i.payment)
287- let betNotInWaves = isDefined(pmt.assetId)
288- let feeNotInWaves = isDefined(pmt.assetId)
289- let winAmt = ValidateBetAndDefineWinAmt(pmt.amount, playerChoice)
290- let txIdUsed = isDefined(getString(this, gameId))
291- if (betNotInWaves)
292- then throw("Bet amount must be in Waves")
293- else if (feeNotInWaves)
294- then throw("Transaction's fee must be in Waves")
295- else if (txIdUsed)
296- then throw("Passed txId had been used before. Game aborted.")
297- else {
298- let playerPubKey58 = toBase58String(i.callerPublicKey)
299- let gameDataStr = FormatGameDataStr(STATESUBMITTED, playerChoice, playerPubKey58, height, winAmt, "")
300- let readableGameData = ((((((((STATESUBMITTED + "_") + playerChoice) + "_") + playerPubKey58) + "_") + toString(height)) + "_") + toString(winAmt))
301- let serverTransfer = [ScriptTransfer(SERVER, COMMISSION, unit)]
302- let betData = [DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]
303- ScriptResult(WriteSet(betData), TransferSet(serverTransfer))
304- }
284+ let a = toBase64String(toBytes("3MsD5LWNJmQkkWpj3RtaeRVrKGLgoCE7kpB"))
285+ throw(a)
305286 }
306287
307288
308289
309290 @Callable(i)
310291 func withdraw (gameId,rsaSign) = {
311292 let gameDataList = ExtractGameDataList(gameId)
312293 let gameState = gameDataList[IdxGameState]
313294 let playerChoice = gameDataList[IdxPlayerChoice]
314295 let startedHeight = parseIntValue(gameDataList[IdxStartedHeight])
315296 let winAmt = parseIntValue(gameDataList[IdxWinAmt])
316297 let playerPubKey58 = gameDataList[IdxPlayerPubKey58]
317298 let playerAddress = addressFromPublicKey(fromBase58String(playerPubKey58))
318299 let winByTimeout = ((height - startedHeight) > RANDORACLETIMEFRAME)
319300 let decreasedReserves = DecreaseReservedAmt(gameId, winAmt)
320301 if ((gameState != STATESUBMITTED))
321302 then throw("Invalid game state for passed gameId")
322303 else if (winByTimeout)
323304 then {
324305 let randStr = getWinStr(playerChoice)
325306 let newGameDataStr = FormatGameDataStr(STATEWON, playerChoice, playerPubKey58, startedHeight, winAmt, randStr)
326307 WinScriptSet(gameId, playerAddress, winAmt, newGameDataStr, winByTimeout, decreasedReserves)
327308 }
328309 else {
329310 let randInt = GenerateRandInt(gameId, rsaSign)
330311 let randStr = RandToStr(randInt)
331312 if (IsPlayerWin(playerChoice, randStr))
332313 then {
333314 let newGameDataStr = FormatGameDataStr(STATEWON, playerChoice, playerPubKey58, startedHeight, winAmt, randStr)
334315 WinScriptSet(gameId, playerAddress, winAmt, newGameDataStr, winByTimeout, decreasedReserves)
335316 }
336317 else {
337318 let newGameDataStr = FormatGameDataStr(STATELOST, playerChoice, playerPubKey58, startedHeight, winAmt, randStr)
338319 WriteSet([DataEntry(gameId, newGameDataStr), decreasedReserves])
339320 }
340321 }
341322 }
342323
343324

github/deemru/w8io/873ac7e 
36.65 ms