tx · 4Jo2ENfW7ZBtadaNrgy8Eqf3VqUnN77e4RnuB6t1qQzy

3NCs4motPXw3h6vyT7o6PAKmbo3e2jk8kHa:  -0.05000000 Waves

2019.10.27 21:55 [738916] smart account 3NCs4motPXw3h6vyT7o6PAKmbo3e2jk8kHa > SELF 0.00000000 Waves

{ "type": 13, "id": "4Jo2ENfW7ZBtadaNrgy8Eqf3VqUnN77e4RnuB6t1qQzy", "fee": 5000000, "feeAssetId": null, "timestamp": 1572202353714, "version": 1, "sender": "3NCs4motPXw3h6vyT7o6PAKmbo3e2jk8kHa", "senderPublicKey": "DdkgRd7YzZtSU3hXJc7sHsU7sM8nUSEwkzqZCaCTXKRe", "proofs": [ "4nFdjhRoNLDP1J1GPCwxbBa7TRxf214ZrBVVtseHFghfQJLoaJGpKMYDaRGJmx2VymJWxrFAAiUAivMJrq9wYHod" ], "script": "base64:AAIDAAAAAAAAAA4IARIECgIIARIECgIIAgAAACYAAAAACVJTQVBVQkxJQwkAAlsAAAABAgAAAY9iYXNlNjQ6TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFtT2xSQlRZRU8zSDdZOXJCbW9GUUZuNDM5MlB4MFF3MTNEc2RFaG56TUgyY2o2WTV5bVB1Q09MTU5lNXFyVXpRbDhvUkx6SUJ6RlZNWmx3VVlsMmJvc3JPSXhRYllGN1dWUVd2b1Z4RVQxWUlnRG0zTnp6T0xBNXVIN0NLTzBzbnNobU1GQ0RPWkVldzQxR2pLaDNQZ3grbmJBZ3VQOVpRUGZxU2FmRW1DM0NOLzR5RHNKcktyaVJuaVpKbzlqUy80TExzUkt3QjdIQVpIem9GOUxMN3RTWkgzaHRhTkd0YmRUa3haMVR6U1QzTWIyVlBTenNadlFEb2NYVVZPbUpPdTBvMjlhT1krR2tHL0c0UkNLMEZCV1FIRVV2QzUxVFJEUzVrOGphZDBPMU1vYmpRYzZiMThkK2Z1b1ZGZE5mWndHSCt1RnVkdFBHM1VKVGYybWt6WlFJREFRQUIAAAAAD0dBTUVTQ09VTlRFUktFWQIAAAAJJEdBTUVfTlVNAAAAAA5SRVNFUlZBVElPTktFWQIAAAAQJFJFU0VSVkVEX0FNT1VOVAAAAAAEV0JFVAEAAAAgOkBptoM8ze1CVUAoYBmqau186uSZP0x2SswaAYBAj68AAAAAB1dBVkVMRVQJAABoAAAAAgkAAGgAAAACAAAAAAAAAABkAAAAAAAAAAPoAAAAAAAAAAPoAAAAAAtGRUVXQVZFU0JFVAAAAAAAAAAABAAAAAAJRkVFTUNBRkVFAAAAAAAAAAACAAAAAA5TVEFURVNVQk1JVFRFRAIAAAAJU1VCTUlUVEVEAAAAAAhTVEFURVdPTgIAAAADV09OAAAAAAlTVEFURUxPU1QCAAAABExPU1QAAAAACVJPTExVTkRFUgIAAAAFVU5ERVIAAAAACFJPTExPVkVSAgAAAARPVkVSAAAAAAZCRVRNSU4JAABoAAAAAgAAAAAAAAAAZAUAAAAHV0FWRUxFVAAAAAAGQkVUTUFYCQAAaAAAAAIAAAAAAAExLQAFAAAAB1dBVkVMRVQAAAAADVBSRURJQ1RJT05NSU4A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AgUAAAAKcHJlZGljdGlvbgAAAAAAAAAALQAAAAAAAANXAAMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAALgAAAAAAAANEcgMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAALwAAAAAAAAMyogMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAAMAAAAAAAAAMhkAMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAAMQAAAAAAAAMRPAMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAAMgAAAAAAAAMBiAMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAAMwAAAAAAAALyagMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAANAAAAAAAAALj7AMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAANQAAAAAAAALV8AMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAANgAAAAAAAALIgAMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAANwAAAAAAAAK7kgMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAAOAAAAAAAAAKvEgMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAAOQAAAAAAAAKjAAMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAAOgAAAAAAAAKXXAMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAAOwAAAAAAAAKMHAMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAAPAAAAAAAAAKBQAMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAAPQAAAAAAAAJ2vgMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAAPgAAAAAAAAJslgMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAAPwAAAAAAAAJitAMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAAQAAAAAAAAAJZLAMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAAAAAAAAAAQQAAAAAAAAJP6gMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgAA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YWQgYmVlbiB1c2VkIGJlZm9yZS4gR2FtZSBhYm9ydGVkLgQAAAAKbmV3R2FtZU51bQkBAAAAEEluY3JlbWVudEdhbWVOdW0AAAAABAAAAA5wbGF5ZXJQdWJLZXk1OAkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAC2dhbWVEYXRhU3RyCQEAAAARRm9ybWF0R2FtZURhdGFTdHIAAAAGBQAAAA5TVEFURVNVQk1JVFRFRAUAAAAKcHJlZGljdGlvbgUAAAAIcm9sbFR5cGUFAAAADnBsYXllclB1YktleTU4BQAAAAZ3aW5BbXQCAAAAAAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADlJFU0VSVkFUSU9OS0VZCQEAAAAeVmFsaWRhdGVBbmRJbmNyZWFzZVJlc2VydmVkQW10AAAAAQUAAAAGd2luQW10CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA9HQU1FU0NPVU5URVJLRVkFAAAACm5ld0dhbWVOdW0JAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAABmdhbWVJZAUAAAALZ2FtZURhdGFTdHIFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAgAAAAZnYW1lSWQAAAAGcnNhU2lnBAAAAAxnYW1lRGF0YUxpc3QJAQAAABNFeHRyYWN0R2FtZURhdGFMaXN0AAAAAQUAAAAGZ2FtZUlkBAAAAAlnYW1lU3RhdGUJAAGRAAAAAgUAAAAMZ2FtZURhdGFMaXN0BQAAAAxJZHhHYW1lU3RhdGUEAAAACnByZWRpY3Rpb24JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAADUlkeFByZWRpY3Rpb24EAAAACHJvbGxUeXBlCQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAAHSWR4VHlwZQQAAAAGd2luQW10CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAMZ2FtZURhdGFMaXN0BQAAAAlJZHhXaW5BbXQEAAAADnBsYXllclB1YktleTU4CQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAARSWR4UGxheWVyUHViS2V5NTgEAAAADXBsYXllckFkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEJAAJZAAAAAQUAAAAOcGxheWVyUHViS2V5NTgEAAAAEWRlY3JlYXNlZFJlc2VydmVzCQEAAAATRGVjcmVhc2VSZXNlcnZlZEFtdAAAAAIFAAAABmdhbWVJZAUAAAAGd2luQW10AwkBAAAAAiE9AAAAAgUAAAAJZ2FtZVN0YXRlBQAAAA5TVEFURVNVQk1JVFRFRAkAAAIAAAABAgAAACRJbnZhbGlkIGdhbWUgc3RhdGUgZm9yIHBhc3NlZCBnYW1lSWQEAAAABHJhbmQJAQAAAA9HZW5lcmF0ZVJhbmRJbnQAAAACBQAAAAZnYW1lSWQFAAAABnJzYVNpZwQAAAAHcmFuZFN0cgkBAAAACVJhbmRUb1N0cgAAAAEFAAAABHJhbmQDCQEAAAAHZGljZVdpbgAAAAMFAAAACHJvbGxUeXBlBQAAAApwcmVkaWN0aW9uBQAAAARyYW5kBAAAAA5uZXdHYW1lRGF0YVN0cgkBAAAAEUZvcm1hdEdhbWVEYXRhU3RyAAAABgUAAAAIU1RBVEVXT04FAAAACnByZWRpY3Rpb24FAAAACHJvbGxUeXBlBQAAAA5wbGF5ZXJQdWJLZXk1OAUAAAAGd2luQW10BQAAAAdyYW5kU3RyCQEAAAAMV2luU2NyaXB0U2V0AAAABAUAAAAGZ2FtZUlkBQAAAA1wbGF5ZXJBZGRyZXNzBQAAAAZ3aW5BbXQFAAAADm5ld0dhbWVEYXRhU3RyBAAAAA5uZXdHYW1lRGF0YVN0cgkBAAAAEUZvcm1hdEdhbWVEYXRhU3RyAAAABgUAAAAJU1RBVEVMT1NUBQAAAApwcmVkaWN0aW9uBQAAAAhyb2xsVHlwZQUAAAAOcGxheWVyUHViS2V5NTgFAAAABndpbkFtdAUAAAAHcmFuZFN0cgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAGZ2FtZUlkBQAAAA5uZXdHYW1lRGF0YVN0cgUAAAADbmlsAAAAADGIKKU=", "chainId": 84, "height": 738916, "spentComplexity": 0 } View: original | compacted Prev: 2vjcBi3enUk19jKpV2vnfhPXhWqxZ5pwjF3wLL7yzpvC Next: A8XAodu18dsXK2KtKevoyd28m9ipix69ywjsQPeKWwYg Diff:
OldNewDifferences
77
88 let RESERVATIONKEY = "$RESERVED_AMOUNT"
99
10-let WBET = base58'23vgV9p9pD83A7CFbsDEc4zjanep7UeFo4ZRS6oGorhv'
11-
12-let WALLETWAVESBET = Address(base58'3N2tusqAtDctK8iSTXS6F9rimmftmSuwLUX')
13-
14-let WALLETMCAFFE = Address(base58'')
10+let WBET = base58'4vPcbA5yiwpWBVPALPGXus6fNdGEuYTpe4hAeSxM9Kj4'
1511
1612 let WAVELET = ((100 * 1000) * 1000)
1713
3127
3228 let BETMIN = (100 * WAVELET)
3329
34-let BETMAX = ((1000 * 100) * WAVELET)
30+let BETMAX = (20000000 * WAVELET)
3531
36-let PREDICTIONMIN = 4
32+let PREDICTIONMIN = 1
3733
38-let PREDICTIONMAX = 100
34+let PREDICTIONMAX = 99
3935
4036 let IdxGameState = 0
4137
42-let IdxPlayerChoice = 1
38+let IdxPrediction = 1
4339
4440 let IdxType = 2
4541
7268 let newReservedAmount = (ExtractReservedAmt() + winAmt)
7369 let balance = assetBalance(this, WBET)
7470 if ((newReservedAmount > balance))
75- then throw("Insufficient funds on Waves Rider account. Transaction was rejected for your safety.")
71+ then throw("Insufficient funds on Wavesbet Dice account. Transaction was rejected for your safety.")
7672 else newReservedAmount
7773 }
7874
8985 }
9086
9187
92-func FormatGameDataStr (gameState,playerChoice,playerType,playerPubKey58,winAmt,randOrEmpty) = {
93- let fullStateStr = ((((((((FormatGameDataParam(gameState) + "_") + FormatGameDataParam(playerChoice)) + "_") + FormatGameDataParam(playerType)) + "_") + FormatGameDataParam(playerPubKey58)) + "_") + FormatGameDataParam(toString(winAmt)))
88+func FormatGameDataStr (gameState,prediction,typeRoll,playerPubKey58,winAmt,randOrEmpty) = {
89+ let fullStateStr = ((((((((FormatGameDataParam(gameState) + "_") + FormatGameDataParam(toString(prediction))) + "_") + FormatGameDataParam(typeRoll)) + "_") + FormatGameDataParam(playerPubKey58)) + "_") + FormatGameDataParam(toString(winAmt)))
9490 if ((randOrEmpty == ""))
9591 then fullStateStr
9692 else ((fullStateStr + "_") + FormatGameDataParam(randOrEmpty))
118114
119115 func ParseGameRawDataStr (rawStateStr) = {
120116 let gameState = ParseNextAttribute(rawStateStr)
121- let playerChoice = ParseNextAttribute(gameState[1])
122- let rollType = ParseNextAttribute(playerChoice[1])
117+ let prediction = ParseNextAttribute(gameState[1])
118+ let rollType = ParseNextAttribute(prediction[1])
123119 let playerPubKey58 = ParseNextAttribute(rollType[1])
124120 let winAmt = ParseNextAttribute(playerPubKey58[1])
125-[gameState[0], playerChoice[0], rollType[0], playerPubKey58[0], winAmt[0]]
121+[gameState[0], prediction[0], rollType[0], playerPubKey58[0], winAmt[0]]
126122 }
127123
128124
166162
167163
168164 func WinScriptSet (gameId,playerAddress,winAmt,newGameDataStr) = {
169- let tSetCommonData = [ScriptTransfer(playerAddress, winAmt, base58'4vPcbA5yiwpWBVPALPGXus6fNdGEuYTpe4hAeSxM9Kj4')]
165+ let tSetCommonData = [ScriptTransfer(playerAddress, winAmt, WBET)]
170166 let writeDicePlay = WriteSet([DataEntry("Game Id", gameId), DataEntry("Player Address", toString(playerAddress))])
171167 ScriptResult(writeDicePlay, TransferSet(tSetCommonData))
172168 }
577573 func ValidateBetAndDefineWinAmt (amount,prediction,rollType) = if (if ((BETMIN > amount))
578574 then true
579575 else (amount > BETMAX))
580- then throw(((("Bet amount is not in range: minBet=" + toString((BETMIN / 100000000))) + " maxBet=") + toString((BETMAX / 100000000))))
576+ then throw(((("Bet amount is not in range: minBet=" + toString((BETMIN / WAVELET))) + " maxBet=") + toString((BETMAX / WAVELET))))
581577 else if (if ((rollType != ROLLUNDER))
582578 then (rollType != ROLLOVER)
583579 else false)
585581 else if (if ((PREDICTIONMIN > prediction))
586582 then true
587583 else (prediction > PREDICTIONMAX))
588- then throw(((("Prediction is out of the condition: " + toString(PREDICTIONMIN)) + " <= predction <= ") + toString(PREDICTIONMAX)))
584+ then throw(((("Prediction is out of the range: " + toString(PREDICTIONMIN)) + " <= prediction <= ") + toString(PREDICTIONMAX)))
589585 else {
590586 let multi = Multiplier(prediction, rollType)
591587 ((((amount * multi) / 100000) * (100 - (FEEWAVESBET + FEEMCAFEE))) / 100)
594590
595591 @Callable(i)
596592 func playDice (rollType,prediction) = {
597- let predInt = parseIntValue(prediction)
598593 let gameId = toBase58String(i.transactionId)
599594 let payment = extract(i.payment)
600595 let feeAssetId = isDefined(i.feeAssetId)
601- let multi = Multiplier(predInt, rollType)
602- let winAmt = ValidateBetAndDefineWinAmt(payment.amount, predInt, rollType)
596+ let multi = Multiplier(prediction, rollType)
597+ let winAmt = ValidateBetAndDefineWinAmt(payment.amount, prediction, rollType)
603598 let playerBalance = wavesBalance(i.caller)
604599 let gameIdUsed = isDefined(getString(this, gameId))
605600 if ((payment.assetId != WBET))
614609 let newGameNum = IncrementGameNum()
615610 let playerPubKey58 = toBase58String(i.callerPublicKey)
616611 let gameDataStr = FormatGameDataStr(STATESUBMITTED, prediction, rollType, playerPubKey58, winAmt, "")
617- ScriptResult(WriteSet([DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]), TransferSet([ScriptTransfer(WALLETWAVESBET, ((payment.amount * FEEWAVESBET) / 100), WBET), ScriptTransfer(this, 500000, unit)]))
612+ ScriptResult(WriteSet([DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]), TransferSet(nil))
618613 }
619614 }
620615
624619 func withdraw (gameId,rsaSig) = {
625620 let gameDataList = ExtractGameDataList(gameId)
626621 let gameState = gameDataList[IdxGameState]
627- let playerChoice = gameDataList[IdxPlayerChoice]
622+ let prediction = parseIntValue(gameDataList[IdxPrediction])
628623 let rollType = gameDataList[IdxType]
629624 let winAmt = parseIntValue(gameDataList[IdxWinAmt])
630625 let playerPubKey58 = gameDataList[IdxPlayerPubKey58]
635630 else {
636631 let rand = GenerateRandInt(gameId, rsaSig)
637632 let randStr = RandToStr(rand)
638- if (diceWin(rollType, parseIntValue(playerChoice), rand))
633+ if (diceWin(rollType, prediction, rand))
639634 then {
640- let newGameDataStr = FormatGameDataStr(STATEWON, playerChoice, rollType, playerPubKey58, winAmt, randStr)
635+ let newGameDataStr = FormatGameDataStr(STATEWON, prediction, rollType, playerPubKey58, winAmt, randStr)
641636 WinScriptSet(gameId, playerAddress, winAmt, newGameDataStr)
642637 }
643638 else {
644- let newGameDataStr = FormatGameDataStr(STATELOST, playerChoice, rollType, playerPubKey58, winAmt, randStr)
639+ let newGameDataStr = FormatGameDataStr(STATELOST, prediction, rollType, playerPubKey58, winAmt, randStr)
645640 WriteSet([DataEntry(gameId, newGameDataStr)])
646641 }
647642 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let RSAPUBLIC = fromBase64String("base64:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmOlRBTYEO3H7Y9rBmoFQFn4392Px0Qw13DsdEhnzMH2cj6Y5ymPuCOLMNe5qrUzQl8oRLzIBzFVMZlwUYl2bosrOIxQbYF7WVQWvoVxET1YIgDm3NzzOLA5uH7CKO0snshmMFCDOZEew41GjKh3Pgx+nbAguP9ZQPfqSafEmC3CN/4yDsJrKriRniZJo9jS/4LLsRKwB7HAZHzoF9LL7tSZH3htaNGtbdTkxZ1TzST3Mb2VPSzsZvQDocXUVOmJOu0o29aOY+GkG/G4RCK0FBWQHEUvC51TRDS5k8jad0O1MobjQc6b18d+fuoVFdNfZwGH+uFudtPG3UJTf2mkzZQIDAQAB")
55
66 let GAMESCOUNTERKEY = "$GAME_NUM"
77
88 let RESERVATIONKEY = "$RESERVED_AMOUNT"
99
10-let WBET = base58'23vgV9p9pD83A7CFbsDEc4zjanep7UeFo4ZRS6oGorhv'
11-
12-let WALLETWAVESBET = Address(base58'3N2tusqAtDctK8iSTXS6F9rimmftmSuwLUX')
13-
14-let WALLETMCAFFE = Address(base58'')
10+let WBET = base58'4vPcbA5yiwpWBVPALPGXus6fNdGEuYTpe4hAeSxM9Kj4'
1511
1612 let WAVELET = ((100 * 1000) * 1000)
1713
1814 let FEEWAVESBET = 4
1915
2016 let FEEMCAFEE = 2
2117
2218 let STATESUBMITTED = "SUBMITTED"
2319
2420 let STATEWON = "WON"
2521
2622 let STATELOST = "LOST"
2723
2824 let ROLLUNDER = "UNDER"
2925
3026 let ROLLOVER = "OVER"
3127
3228 let BETMIN = (100 * WAVELET)
3329
34-let BETMAX = ((1000 * 100) * WAVELET)
30+let BETMAX = (20000000 * WAVELET)
3531
36-let PREDICTIONMIN = 4
32+let PREDICTIONMIN = 1
3733
38-let PREDICTIONMAX = 100
34+let PREDICTIONMAX = 99
3935
4036 let IdxGameState = 0
4137
42-let IdxPlayerChoice = 1
38+let IdxPrediction = 1
4339
4440 let IdxType = 2
4541
4642 let IdxPlayerPubKey58 = 3
4743
4844 let IdxWinAmt = 4
4945
5046 let IdxRandOrEmpty = 5
5147
5248 func IncrementGameNum () = {
5349 let gameNum = match getInteger(this, GAMESCOUNTERKEY) {
5450 case num: Int =>
5551 num
5652 case _ =>
5753 0
5854 }
5955 (gameNum + 1)
6056 }
6157
6258
6359 func ExtractReservedAmt () = match getInteger(this, RESERVATIONKEY) {
6460 case a: Int =>
6561 a
6662 case _ =>
6763 0
6864 }
6965
7066
7167 func ValidateAndIncreaseReservedAmt (winAmt) = {
7268 let newReservedAmount = (ExtractReservedAmt() + winAmt)
7369 let balance = assetBalance(this, WBET)
7470 if ((newReservedAmount > balance))
75- then throw("Insufficient funds on Waves Rider account. Transaction was rejected for your safety.")
71+ then throw("Insufficient funds on Wavesbet Dice account. Transaction was rejected for your safety.")
7672 else newReservedAmount
7773 }
7874
7975
8076 func FormatGameDataParam (p) = {
8177 let s = size(p)
8278 if ((s == 0))
8379 then throw("Parameter size must be greater then 0")
8480 else if ((s > 99))
8581 then throw("Parameter size must be less then 100")
8682 else if ((10 > s))
8783 then (("0" + toString(s)) + p)
8884 else (toString(s) + p)
8985 }
9086
9187
92-func FormatGameDataStr (gameState,playerChoice,playerType,playerPubKey58,winAmt,randOrEmpty) = {
93- let fullStateStr = ((((((((FormatGameDataParam(gameState) + "_") + FormatGameDataParam(playerChoice)) + "_") + FormatGameDataParam(playerType)) + "_") + FormatGameDataParam(playerPubKey58)) + "_") + FormatGameDataParam(toString(winAmt)))
88+func FormatGameDataStr (gameState,prediction,typeRoll,playerPubKey58,winAmt,randOrEmpty) = {
89+ let fullStateStr = ((((((((FormatGameDataParam(gameState) + "_") + FormatGameDataParam(toString(prediction))) + "_") + FormatGameDataParam(typeRoll)) + "_") + FormatGameDataParam(playerPubKey58)) + "_") + FormatGameDataParam(toString(winAmt)))
9490 if ((randOrEmpty == ""))
9591 then fullStateStr
9692 else ((fullStateStr + "_") + FormatGameDataParam(randOrEmpty))
9793 }
9894
9995
10096 func RemoveUnderscoreIfPresent (remaining) = if ((size(remaining) > 0))
10197 then drop(remaining, 1)
10298 else remaining
10399
104100
105101 func ParseNextAttribute (remaining) = {
106102 let s = size(remaining)
107103 if ((s > 0))
108104 then {
109105 let nn = parseIntValue(take(remaining, 2))
110106 let v = take(drop(remaining, 2), nn)
111107 let tmpRemaining = drop(remaining, (nn + 2))
112108 let remainingState = RemoveUnderscoreIfPresent(tmpRemaining)
113109 [v, remainingState]
114110 }
115111 else throw("Empty string was passed into parseNextAttribute func")
116112 }
117113
118114
119115 func ParseGameRawDataStr (rawStateStr) = {
120116 let gameState = ParseNextAttribute(rawStateStr)
121- let playerChoice = ParseNextAttribute(gameState[1])
122- let rollType = ParseNextAttribute(playerChoice[1])
117+ let prediction = ParseNextAttribute(gameState[1])
118+ let rollType = ParseNextAttribute(prediction[1])
123119 let playerPubKey58 = ParseNextAttribute(rollType[1])
124120 let winAmt = ParseNextAttribute(playerPubKey58[1])
125-[gameState[0], playerChoice[0], rollType[0], playerPubKey58[0], winAmt[0]]
121+[gameState[0], prediction[0], rollType[0], playerPubKey58[0], winAmt[0]]
126122 }
127123
128124
129125 func ExtractGameDataList (gameId) = {
130126 let rawDataStr = match getString(this, gameId) {
131127 case str: String =>
132128 str
133129 case _ =>
134130 throw(("Couldn't find game by " + gameId))
135131 }
136132 ParseGameRawDataStr(rawDataStr)
137133 }
138134
139135
140136 func DecreaseReservedAmt (gameId,winAmt) = {
141137 let newReservedAmount = (ExtractReservedAmt() - winAmt)
142138 if ((0 > newReservedAmount))
143139 then throw("Invalid Dice Roller account state - reserved amount is less than 0")
144140 else DataEntry(RESERVATIONKEY, newReservedAmount)
145141 }
146142
147143
148144 func GenerateRandInt (gameId,rsaSign) = {
149145 let rsaSigValid = rsaVerify(SHA256, toBytes(gameId), rsaSign, RSAPUBLIC)
150146 if (rsaSigValid)
151147 then {
152148 let rand = (toInt(sha256(rsaSign)) % 100)
153149 if ((0 > rand))
154150 then ((-1 * rand) + 1)
155151 else (rand + 1)
156152 }
157153 else throw("Invalid RSA signature")
158154 }
159155
160156
161157 func RandToStr (r) = if (if ((r >= 1))
162158 then (100 >= r)
163159 else false)
164160 then toString(r)
165161 else throw(("Unsupported r parameter passed: expected=[1,...,100] actual=" + toString(r)))
166162
167163
168164 func WinScriptSet (gameId,playerAddress,winAmt,newGameDataStr) = {
169- let tSetCommonData = [ScriptTransfer(playerAddress, winAmt, base58'4vPcbA5yiwpWBVPALPGXus6fNdGEuYTpe4hAeSxM9Kj4')]
165+ let tSetCommonData = [ScriptTransfer(playerAddress, winAmt, WBET)]
170166 let writeDicePlay = WriteSet([DataEntry("Game Id", gameId), DataEntry("Player Address", toString(playerAddress))])
171167 ScriptResult(writeDicePlay, TransferSet(tSetCommonData))
172168 }
173169
174170
175171 func Multiplier (prediction,rollType) = if ((rollType == ROLLUNDER))
176172 then if ((prediction == 1))
177173 then 9850000
178174 else if ((prediction == 2))
179175 then 4925000
180176 else if ((prediction == 3))
181177 then 3283330
182178 else if ((prediction == 4))
183179 then 2462500
184180 else if ((prediction == 5))
185181 then 1970000
186182 else if ((prediction == 6))
187183 then 1641660
188184 else if ((prediction == 7))
189185 then 1407140
190186 else if ((prediction == 8))
191187 then 1231250
192188 else if ((prediction == 9))
193189 then 1094440
194190 else if ((prediction == 10))
195191 then 985000
196192 else if ((prediction == 11))
197193 then 895450
198194 else if ((prediction == 12))
199195 then 820830
200196 else if ((prediction == 13))
201197 then 757690
202198 else if ((prediction == 14))
203199 then 703570
204200 else if ((prediction == 15))
205201 then 656660
206202 else if ((prediction == 16))
207203 then 615620
208204 else if ((prediction == 17))
209205 then 579410
210206 else if ((prediction == 18))
211207 then 547220
212208 else if ((prediction == 19))
213209 then 518420
214210 else if ((prediction == 20))
215211 then 492500
216212 else if ((prediction == 21))
217213 then 469040
218214 else if ((prediction == 22))
219215 then 447720
220216 else if ((prediction == 23))
221217 then 428260
222218 else if ((prediction == 24))
223219 then 410410
224220 else if ((prediction == 25))
225221 then 394000
226222 else if ((prediction == 26))
227223 then 378840
228224 else if ((prediction == 27))
229225 then 364810
230226 else if ((prediction == 28))
231227 then 351780
232228 else if ((prediction == 29))
233229 then 339650
234230 else if ((prediction == 30))
235231 then 328330
236232 else if ((prediction == 31))
237233 then 317740
238234 else if ((prediction == 32))
239235 then 307810
240236 else if ((prediction == 33))
241237 then 298480
242238 else if ((prediction == 34))
243239 then 289700
244240 else if ((prediction == 35))
245241 then 281420
246242 else if ((prediction == 36))
247243 then 273610
248244 else if ((prediction == 37))
249245 then 259210
250246 else if ((prediction == 38))
251247 then 259210
252248 else if ((prediction == 39))
253249 then 252560
254250 else if ((prediction == 40))
255251 then 246250
256252 else if ((prediction == 41))
257253 then 240240
258254 else if ((prediction == 42))
259255 then 234520
260256 else if ((prediction == 43))
261257 then 229060
262258 else if ((prediction == 44))
263259 then 223860
264260 else if ((prediction == 45))
265261 then 218880
266262 else if ((prediction == 46))
267263 then 214130
268264 else if ((prediction == 47))
269265 then 209570
270266 else if ((prediction == 48))
271267 then 205200
272268 else if ((prediction == 49))
273269 then 201020
274270 else if ((prediction == 50))
275271 then 197000
276272 else if ((prediction == 51))
277273 then 193130
278274 else if ((prediction == 52))
279275 then 189420
280276 else if ((prediction == 53))
281277 then 185840
282278 else if ((prediction == 54))
283279 then 182400
284280 else if ((prediction == 55))
285281 then 179090
286282 else if ((prediction == 56))
287283 then 175890
288284 else if ((prediction == 57))
289285 then 172800
290286 else if ((prediction == 58))
291287 then 169820
292288 else if ((prediction == 59))
293289 then 166940
294290 else if ((prediction == 60))
295291 then 164160
296292 else if ((prediction == 61))
297293 then 161470
298294 else if ((prediction == 62))
299295 then 158870
300296 else if ((prediction == 63))
301297 then 156340
302298 else if ((prediction == 64))
303299 then 153900
304300 else if ((prediction == 65))
305301 then 151530
306302 else if ((prediction == 66))
307303 then 149240
308304 else if ((prediction == 67))
309305 then 147010
310306 else if ((prediction == 68))
311307 then 144850
312308 else if ((prediction == 69))
313309 then 142750
314310 else if ((prediction == 70))
315311 then 140710
316312 else if ((prediction == 71))
317313 then 138730
318314 else if ((prediction == 72))
319315 then 136800
320316 else if ((prediction == 73))
321317 then 134930
322318 else if ((prediction == 74))
323319 then 133100
324320 else if ((prediction == 75))
325321 then 131330
326322 else if ((prediction == 76))
327323 then 129600
328324 else if ((prediction == 77))
329325 then 127920
330326 else if ((prediction == 78))
331327 then 126280
332328 else if ((prediction == 79))
333329 then 124680
334330 else if ((prediction == 80))
335331 then 123120
336332 else if ((prediction == 81))
337333 then 121600
338334 else if ((prediction == 82))
339335 then 120120
340336 else if ((prediction == 83))
341337 then 118670
342338 else if ((prediction == 84))
343339 then 117260
344340 else if ((prediction == 85))
345341 then 115880
346342 else if ((prediction == 86))
347343 then 114530
348344 else if ((prediction == 87))
349345 then 113210
350346 else if ((prediction == 88))
351347 then 111930
352348 else if ((prediction == 89))
353349 then 110670
354350 else if ((prediction == 90))
355351 then 109440
356352 else if ((prediction == 91))
357353 then 108240
358354 else if ((prediction == 92))
359355 then 107060
360356 else if ((prediction == 93))
361357 then 105910
362358 else if ((prediction == 94))
363359 then 104780
364360 else if ((prediction == 95))
365361 then 103680
366362 else if ((prediction == 96))
367363 then 103680
368364 else 100000
369365 else if ((rollType == ROLLOVER))
370366 then if ((prediction == 4))
371367 then 103680
372368 else if ((prediction == 5))
373369 then 103680
374370 else if ((prediction == 6))
375371 then 104780
376372 else if ((prediction == 7))
377373 then 105910
378374 else if ((prediction == 8))
379375 then 107060
380376 else if ((prediction == 9))
381377 then 108240
382378 else if ((prediction == 10))
383379 then 109440
384380 else if ((prediction == 11))
385381 then 110670
386382 else if ((prediction == 12))
387383 then 111930
388384 else if ((prediction == 13))
389385 then 113210
390386 else if ((prediction == 14))
391387 then 114530
392388 else if ((prediction == 15))
393389 then 115880
394390 else if ((prediction == 16))
395391 then 117260
396392 else if ((prediction == 17))
397393 then 118670
398394 else if ((prediction == 18))
399395 then 120120
400396 else if ((prediction == 19))
401397 then 121600
402398 else if ((prediction == 20))
403399 then 123120
404400 else if ((prediction == 21))
405401 then 124680
406402 else if ((prediction == 22))
407403 then 126280
408404 else if ((prediction == 23))
409405 then 127920
410406 else if ((prediction == 24))
411407 then 129600
412408 else if ((prediction == 25))
413409 then 131330
414410 else if ((prediction == 26))
415411 then 133100
416412 else if ((prediction == 27))
417413 then 134930
418414 else if ((prediction == 28))
419415 then 136800
420416 else if ((prediction == 29))
421417 then 138730
422418 else if ((prediction == 30))
423419 then 140710
424420 else if ((prediction == 31))
425421 then 142750
426422 else if ((prediction == 32))
427423 then 144850
428424 else if ((prediction == 33))
429425 then 147010
430426 else if ((prediction == 34))
431427 then 149240
432428 else if ((prediction == 35))
433429 then 151530
434430 else if ((prediction == 36))
435431 then 153900
436432 else if ((prediction == 37))
437433 then 156340
438434 else if ((prediction == 38))
439435 then 158870
440436 else if ((prediction == 39))
441437 then 161470
442438 else if ((prediction == 40))
443439 then 164160
444440 else if ((prediction == 41))
445441 then 166940
446442 else if ((prediction == 42))
447443 then 169820
448444 else if ((prediction == 43))
449445 then 172800
450446 else if ((prediction == 44))
451447 then 175890
452448 else if ((prediction == 45))
453449 then 179090
454450 else if ((prediction == 46))
455451 then 185840
456452 else if ((prediction == 47))
457453 then 185840
458454 else if ((prediction == 48))
459455 then 189420
460456 else if ((prediction == 49))
461457 then 193130
462458 else if ((prediction == 50))
463459 then 197000
464460 else if ((prediction == 51))
465461 then 201020
466462 else if ((prediction == 52))
467463 then 205200
468464 else if ((prediction == 53))
469465 then 209570
470466 else if ((prediction == 54))
471467 then 214130
472468 else if ((prediction == 55))
473469 then 218880
474470 else if ((prediction == 56))
475471 then 223860
476472 else if ((prediction == 57))
477473 then 229060
478474 else if ((prediction == 58))
479475 then 234520
480476 else if ((prediction == 59))
481477 then 240240
482478 else if ((prediction == 60))
483479 then 246250
484480 else if ((prediction == 61))
485481 then 252560
486482 else if ((prediction == 62))
487483 then 259210
488484 else if ((prediction == 63))
489485 then 259210
490486 else if ((prediction == 64))
491487 then 273610
492488 else if ((prediction == 65))
493489 then 281420
494490 else if ((prediction == 66))
495491 then 289700
496492 else if ((prediction == 67))
497493 then 298480
498494 else if ((prediction == 68))
499495 then 307810
500496 else if ((prediction == 69))
501497 then 317740
502498 else if ((prediction == 70))
503499 then 328330
504500 else if ((prediction == 71))
505501 then 339650
506502 else if ((prediction == 72))
507503 then 351780
508504 else if ((prediction == 73))
509505 then 364810
510506 else if ((prediction == 74))
511507 then 378840
512508 else if ((prediction == 75))
513509 then 394000
514510 else if ((prediction == 76))
515511 then 410410
516512 else if ((prediction == 77))
517513 then 428260
518514 else if ((prediction == 78))
519515 then 447720
520516 else if ((prediction == 79))
521517 then 469040
522518 else if ((prediction == 80))
523519 then 492500
524520 else if ((prediction == 81))
525521 then 518420
526522 else if ((prediction == 82))
527523 then 547220
528524 else if ((prediction == 83))
529525 then 579410
530526 else if ((prediction == 84))
531527 then 615620
532528 else if ((prediction == 85))
533529 then 656660
534530 else if ((prediction == 86))
535531 then 703570
536532 else if ((prediction == 87))
537533 then 757690
538534 else if ((prediction == 88))
539535 then 820830
540536 else if ((prediction == 89))
541537 then 895450
542538 else if ((prediction == 90))
543539 then 985000
544540 else if ((prediction == 91))
545541 then 1094440
546542 else if ((prediction == 92))
547543 then 1231250
548544 else if ((prediction == 93))
549545 then 1407140
550546 else if ((prediction == 94))
551547 then 1641660
552548 else if ((prediction == 95))
553549 then 1970000
554550 else if ((prediction == 96))
555551 then 2462500
556552 else if ((prediction == 97))
557553 then 3283330
558554 else if ((prediction == 98))
559555 then 4925000
560556 else if ((prediction == 99))
561557 then 9850000
562558 else 100000
563559 else 100000
564560
565561
566562 func diceWin (type,prediction,number) = if ((type == ROLLUNDER))
567563 then if ((prediction >= number))
568564 then true
569565 else false
570566 else if ((type == ROLLOVER))
571567 then if ((number >= prediction))
572568 then true
573569 else false
574570 else false
575571
576572
577573 func ValidateBetAndDefineWinAmt (amount,prediction,rollType) = if (if ((BETMIN > amount))
578574 then true
579575 else (amount > BETMAX))
580- then throw(((("Bet amount is not in range: minBet=" + toString((BETMIN / 100000000))) + " maxBet=") + toString((BETMAX / 100000000))))
576+ then throw(((("Bet amount is not in range: minBet=" + toString((BETMIN / WAVELET))) + " maxBet=") + toString((BETMAX / WAVELET))))
581577 else if (if ((rollType != ROLLUNDER))
582578 then (rollType != ROLLOVER)
583579 else false)
584580 then throw("Invalid Roll type, try with OVER or UNDER")
585581 else if (if ((PREDICTIONMIN > prediction))
586582 then true
587583 else (prediction > PREDICTIONMAX))
588- then throw(((("Prediction is out of the condition: " + toString(PREDICTIONMIN)) + " <= predction <= ") + toString(PREDICTIONMAX)))
584+ then throw(((("Prediction is out of the range: " + toString(PREDICTIONMIN)) + " <= prediction <= ") + toString(PREDICTIONMAX)))
589585 else {
590586 let multi = Multiplier(prediction, rollType)
591587 ((((amount * multi) / 100000) * (100 - (FEEWAVESBET + FEEMCAFEE))) / 100)
592588 }
593589
594590
595591 @Callable(i)
596592 func playDice (rollType,prediction) = {
597- let predInt = parseIntValue(prediction)
598593 let gameId = toBase58String(i.transactionId)
599594 let payment = extract(i.payment)
600595 let feeAssetId = isDefined(i.feeAssetId)
601- let multi = Multiplier(predInt, rollType)
602- let winAmt = ValidateBetAndDefineWinAmt(payment.amount, predInt, rollType)
596+ let multi = Multiplier(prediction, rollType)
597+ let winAmt = ValidateBetAndDefineWinAmt(payment.amount, prediction, rollType)
603598 let playerBalance = wavesBalance(i.caller)
604599 let gameIdUsed = isDefined(getString(this, gameId))
605600 if ((payment.assetId != WBET))
606601 then throw("Payment should be in Wavesbet")
607602 else if ((100000 > playerBalance))
608603 then throw("There are not enough waves, it takes 0.01 Waves to bet. Game aborted.")
609604 else if (feeAssetId)
610605 then throw("Transaction's fee must be in Waves. Game aborted.")
611606 else if (gameIdUsed)
612607 then throw("Passed gameId had been used before. Game aborted.")
613608 else {
614609 let newGameNum = IncrementGameNum()
615610 let playerPubKey58 = toBase58String(i.callerPublicKey)
616611 let gameDataStr = FormatGameDataStr(STATESUBMITTED, prediction, rollType, playerPubKey58, winAmt, "")
617- ScriptResult(WriteSet([DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]), TransferSet([ScriptTransfer(WALLETWAVESBET, ((payment.amount * FEEWAVESBET) / 100), WBET), ScriptTransfer(this, 500000, unit)]))
612+ ScriptResult(WriteSet([DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]), TransferSet(nil))
618613 }
619614 }
620615
621616
622617
623618 @Callable(i)
624619 func withdraw (gameId,rsaSig) = {
625620 let gameDataList = ExtractGameDataList(gameId)
626621 let gameState = gameDataList[IdxGameState]
627- let playerChoice = gameDataList[IdxPlayerChoice]
622+ let prediction = parseIntValue(gameDataList[IdxPrediction])
628623 let rollType = gameDataList[IdxType]
629624 let winAmt = parseIntValue(gameDataList[IdxWinAmt])
630625 let playerPubKey58 = gameDataList[IdxPlayerPubKey58]
631626 let playerAddress = addressFromPublicKey(fromBase58String(playerPubKey58))
632627 let decreasedReserves = DecreaseReservedAmt(gameId, winAmt)
633628 if ((gameState != STATESUBMITTED))
634629 then throw("Invalid game state for passed gameId")
635630 else {
636631 let rand = GenerateRandInt(gameId, rsaSig)
637632 let randStr = RandToStr(rand)
638- if (diceWin(rollType, parseIntValue(playerChoice), rand))
633+ if (diceWin(rollType, prediction, rand))
639634 then {
640- let newGameDataStr = FormatGameDataStr(STATEWON, playerChoice, rollType, playerPubKey58, winAmt, randStr)
635+ let newGameDataStr = FormatGameDataStr(STATEWON, prediction, rollType, playerPubKey58, winAmt, randStr)
641636 WinScriptSet(gameId, playerAddress, winAmt, newGameDataStr)
642637 }
643638 else {
644- let newGameDataStr = FormatGameDataStr(STATELOST, playerChoice, rollType, playerPubKey58, winAmt, randStr)
639+ let newGameDataStr = FormatGameDataStr(STATELOST, prediction, rollType, playerPubKey58, winAmt, randStr)
645640 WriteSet([DataEntry(gameId, newGameDataStr)])
646641 }
647642 }
648643 }
649644
650645

github/deemru/w8io/169f3d6 
204.74 ms